Spec-Zone.ru › MySQL 5.7

13.1.18.2 Оператор CREATE TEMPORARY TABLE

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

CREATE TABLE вызывает неявную фиксацию, за исключением случаев использования ключевого слова TEMPORARY. См. Раздел 13.3.3 «Операторы, вызывающие неявную фиксацию».

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

Для создания временной таблицы необходимо иметь привилегию CREATE TEMPORARY TABLES. После создания временной таблицы сервер не выполняет никаких дополнительных проверок привилегий для таблицы. Создающая сессия может выполнять любые операции с таблицей, такие как DROP TABLE, INSERT, UPDATE или SELECT.

Одним из следствий этого поведения является то, что сессия может манипулировать своими временными таблицами, даже если текущий пользователь не имеет привилегий на их создание. Предположим, что текущий пользователь не имеет привилегии CREATE TEMPORARY TABLES, но может выполнить хранимую процедуру контекста определения, которая выполняется с привилегиями пользователя, у которого есть CREATE TEMPORARY TABLES и которая создаёт временную таблицу. Во время выполнения процедуры сессия использует привилегии определяющего пользователя. После возвращения процедуры эффективные привилегии возвращаются к привилегиям текущего пользователя, которые по-прежнему могут видеть временную таблицу и выполнять любые операции с ней.

Примечание

Поддержка TABLESPACE = innodb_file_per_table и TABLESPACE = innodb_temporary разделов с CREATE TEMPORARY TABLE устарела, начиная с MySQL 5.7.24; ожидается, что она будет удалена в будущих версиях MySQL.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/create-temporary-table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API