MariaDB - Tablas temporales

Algunas operaciones pueden beneficiarse de tablas temporales debido a la velocidad o los datos desechables. La vida de una tabla temporal termina con la terminación de una sesión, ya sea que la utilice desde el símbolo del sistema, con un script PHP o mediante un programa cliente. Tampoco aparece en el sistema de forma típica. El comando SHOW TABLES no revelará una lista que contenga tablas temporales.

Crear una tabla temporal

La palabra clave TEMPORARY dentro de una instrucción CREATE TABLE genera una tabla temporal. Revise un ejemplo que se da a continuación:

mysql>CREATE TEMPORARY TABLE order (
   item_name VARCHAR(50) NOT NULL
   , price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   , quantity INT UNSIGNED NOT NULL DEFAULT 0
);

Al crear una tabla temporal, puede clonar tablas existentes, es decir, todas sus características generales, con la cláusula LIKE. La instrucción CREATE TABLE utilizada para generar la tabla temporal no confirmará transacciones como resultado de la palabra clave TEMPORARY.

Aunque las tablas temporales se distinguen de las no temporales y desaparecen al final de una sesión, pueden tener ciertos conflictos:

  • A veces entran en conflicto con tablas temporales fantasma de sesiones caducadas.

  • A veces entran en conflicto con nombres de sombra de tablas no temporales.

Note - Se permite que las tablas temporales tengan el mismo nombre que una tabla no temporal existente porque MariaDB la ve como una referencia de diferencia.

Administración

MariaDB requiere otorgar privilegios a los usuarios para crear tablas temporales. Utilice una declaración GRANT para otorgar este privilegio a los usuarios que no son administradores.

GRANT CREATE TEMPORARY TABLES ON orders TO 'machine122'@'localhost';

Suelta una mesa temporal

Aunque las tablas temporales se eliminan esencialmente al final de las sesiones, tiene la opción de eliminarlas. Eliminar una tabla temporal requiere el uso de la palabra clave TEMPORARY, y las mejores prácticas sugieren eliminar las tablas temporales antes que las no temporales.

mysql> DROP TABLE order;