13.1.20.2 CREATE TEMPORARY TABLE
puede utilizar el TEMPORARY
palabra clave a la hora de crear una tabla. Una tabla TEMPORARY
solo está visible dentro de la sesión actual y se elimina automáticamente cuando se cierra la sesión. Esto significa que dos sesiones diferentes pueden usar el mismo nombre de tabla temporal sin entrar en conflicto entre sí o con una tabla no-TEMPORARY
del mismo nombre., (La tabla existente se oculta hasta que se elimina la tabla temporal.)
InnoDB
no admite comprimido tablas temporales. Cuando innodb_strict_mode
está activada (valor predeterminado), CREATE TEMPORARY TABLE
devuelve un error si ROW_FORMAT=COMPRESSED
o KEY_BLOCK_SIZE
se especifica. Si innodb_strict_mode
está desactivado, se emiten advertencias y se crea la tabla temporal utilizando un formato de fila no comprimido. La opción innodb_file_per-table
no afecta a la creación de tablas temporales InnoDB
.,
CREATE TABLE
causa una confirmación implícita, excepto cuando se usa con la palabra clave TEMPORARY
. Consulte la sección 13.3.3, «declaraciones que causan una confirmación implícita».
TEMPORARY
las tablas tienen una relación muy suelta con las bases de datos (Esquemas). Eliminar una base de datos no elimina automáticamente ninguna tabla TEMPORARY
creada dentro de esa base de datos.
para crear una tabla temporal, debe tener el privilegio CREATE TEMPORARY TABLES
., Después de que una sesión ha creado una tabla temporal, el servidor no realiza más comprobaciones de privilegios en la tabla. La creación de la sesión se puede realizar cualquier operación sobre la mesa, tales como DROP TABLE
, INSERT
, UPDATE
o SELECT
.
una implicación de este comportamiento es que una sesión puede manipular sus tablas temporales incluso si el usuario actual no tiene privilegios para crearlas., Supongamos que el usuario actual no tiene el privilegio CREATE TEMPORARY TABLES
pero es capaz de ejecutar un procedimiento almacenado definer-context que se ejecuta con los privilegios de un usuario que tiene CREATE TEMPORARY TABLES
y que crea una tabla temporal. Mientras se ejecuta el procedimiento, la sesión utiliza los privilegios del usuario definidor. Después de que el procedimiento regresa, los privilegios efectivos vuelven a los del usuario actual, que todavía puede ver la tabla temporal y realizar cualquier operación en ella.,
no puede usar CREATE TEMPORY TABLE ... LIKE
para crear una tabla vacía basada en la definición de una tabla que reside en el espacio de tabla mysql
, InnoDB
system (innodb_system
), o general tablespace. La definición de espacio de tabla para dicha tabla incluye un atributo TABLESPACE
que define el espacio de tabla donde reside la tabla, y los espacios de tabla mencionados anteriormente no admiten tablas temporales., Para crear una tabla temporal basado en la definición de una tabla, utilice esta sintaxis en su lugar:
CREATE TEMPORARY TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0;
Apoyo TABLESPACE = innodb_file_per_table
y TABLESPACE = innodb_temporary
cláusulas con CREATE TEMPORARY TABLE
está en desuso como de MySQL 8.0.13; esperar que se quitará en una versión futura de MySQL.
Deja una respuesta