MySQLi - Tablas temporales

Las tablas temporales pueden resultar muy útiles en algunos casos para mantener datos temporales. Lo más importante que se debe saber sobre las tablas temporales es que se eliminarán cuando finalice la sesión actual del cliente.

Como se indicó anteriormente, las tablas temporales solo durarán mientras la sesión esté activa. Si ejecuta el código en un script PHP, la tabla temporal se destruirá automáticamente cuando el script termine de ejecutarse. Si está conectado al servidor de base de datos MySQL a través del programa cliente MySQLi, la tabla temporal existirá hasta que cierre el cliente o destruya manualmente la tabla.

Ejemplo

A continuación se muestra un ejemplo que muestra el uso de una tabla temporal. El mismo código se puede usar en scripts PHP usandomysqli_query() función.

mysql> CREATE TEMPORARY TABLE SalesSummary (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
   -> );
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SalesSummary
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)

Cuando emite un comando SHOW TABLES, su tabla temporal no aparecerá en la lista. Ahora, si cierra la sesión de MySQLi y luego emite un comando SELECT, no encontrará datos disponibles en la base de datos. Incluso su mesa temporal tampoco existiría.

Dejar caer tablas temporales

De forma predeterminada, MySQLi elimina todas las tablas temporales cuando finaliza la conexión a la base de datos. Aún así, si desea eliminarlos en el medio, hágalo emitiendo el comando DROP TABLE.

A continuación se muestra el ejemplo sobre cómo eliminar una tabla temporal:

mysql> DROP TABLE SalesSummary;
mysql>  SELECT * FROM SalesSummary;
ERROR 1146: Table 'TUTORIALS.SalesSummary' doesn't exist