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;
Nota

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.