MySQLi - Tabelas Temporárias
As tabelas temporárias podem ser muito úteis em alguns casos para manter dados temporários. A coisa mais importante que deve ser conhecida sobre as tabelas temporárias é que elas serão excluídas quando a sessão atual do cliente terminar.
Conforme declarado anteriormente, as tabelas temporárias durarão apenas enquanto a sessão estiver ativa. Se você executar o código em um script PHP, a tabela temporária será destruída automaticamente quando a execução do script terminar. Se você estiver conectado ao servidor de banco de dados MySQL por meio do programa cliente MySQLi, a tabela temporária existirá até que você feche o cliente ou destrua manualmente a tabela.
Exemplo
Aqui está um exemplo que mostra o uso de uma mesa temporária. O mesmo código pode ser usado em scripts PHP usandomysqli_query() função.
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)
Quando você executa um comando SHOW TABLES, sua tabela temporária não aparece na lista. Agora, se você fizer logout da sessão do MySQLi e emitir um comando SELECT, não encontrará dados disponíveis no banco de dados. Mesmo sua mesa temporária também não existiria.
Eliminando Tabelas Temporárias
Por padrão, todas as tabelas temporárias são excluídas pelo MySQLi quando sua conexão com o banco de dados é encerrada. Ainda assim, se você deseja excluí-los no meio, você o faz emitindo o comando DROP TABLE.
A seguir está o exemplo de descartar uma mesa temporária -
mysql> DROP TABLE SalesSummary;
mysql> SELECT * FROM SalesSummary;
ERROR 1146: Table 'TUTORIALS.SalesSummary' doesn't exist