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

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

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

  • Будет ли временная таблица уникальной для каждого пользователя, выполняющего script...? Или это будет перезаписано, когда два разных пользователя будут запускать script в то же время...?

  • Когда таблица будет уничтожена..? Когда пользователь закрывает окно браузера или просто переходит от страницы, на которой выполняется script...?

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

Вот как я это делаю....

$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'";

Ответ 1

Цитата MySQL справочная страница CREATE TABLE:

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

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

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