действительно ли mysql временная таблица уникальна для каждого пользователя, получающего доступ к сценарию, который создает ее …?

При поиске способа временно сохранить результаты поиска, когда пользователь ищет отель, свободный между конкретными датами, я столкнулся с временными таблицами.

Но на определенные вопросы не отвечают даже в mysql руководстве.... как...

  1. Временная таблица будет уникальна для каждого пользователя, который выполняет сценарий...? Или это будет перезаписано, когда два различных пользователя запустят скрипт одновременно...?

  2. Когда будет таблица быть уничтоженным..? Когда пользователь закрывает окно браузера или просто перешел далеко от страницы, на которой сценарий работает...?

Спасибо за Ваши разъяснения...

Это - то, как я делаю это....

$table = "CREATE OR REPLACE TEMPORARY TABLE $free_room(
              room_id INT(5),
              room_name VARCHAR(150),
              max_persons INT(1),
              rooms_free INT(1),
              room_price INT(6),
              hotel_id INT(4),
              hotel_name VARCHAR(100),
              hotel_stars INT(1),
              hotel_type INT(1)) ENGINE=MEMORY";

    $query_getFreeRooms = "INSERT INTO  $free_room
                           SELECT $rooms.room_id,
                                  $rooms.room_name,
                                  $rooms.max_persons,
                                  $rooms.total_rooms - $rooms.booked_rooms AS rooms_free,
                                  $rooms.room_price,
                                  $hotels.hotel_id,
                                  $hotels.hotel_name,
                                  $hotels.hotel_stars,
                                  $hotels.hotel_type
                           FROM   $hotels,$rooms
                           WHERE  $rooms.room_id NOT IN (SELECT room_id
                                                         FROM   $reservations
                                                         WHERE  $dateCheck)
                           AND    $hotels.hotel_city = '$city_search1'
                           AND    $hotels.hotel_id = $rooms.hotel_id
                           AND    $hotels.hotel_deleted = '0'
                           AND    $rooms.room_deleted = '0'";
10
задан SpikETidE 16 March 2010 в 12:57
поделиться

1 ответ

Цитирую страницу руководства MySQL по CREATE TABLE :

Вы можете использовать ключевое слово TEMPORARY при создании таблицы.
Таблица TEMPORARY является видна только текущему соединении, и удаляется автоматически, когда соединение закрывается.
Это означает, что два разных соединения могут использовать одно и то же временное имя таблицы не конфликтуя друг с друг с другом или с существующей нетемпоральной таблицей с тем же именем.

Учитывая, что два пользователя будут иметь два разных подключения, таблица будет уникальной для каждого пользователя.

Временная таблица будет удалена, когда соединение, создавшее ее, будет закрыто - в PHP, по крайней мере, это означает завершение работы скрипта, генерирующего страницу (то есть, как правило, еще до того, как пользователь действительно прочитает страницу)

30
ответ дан 3 December 2019 в 15:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: