Captura de tela - mysql create temporary table

Como criar tabelas temporárias no MySQL

O uso de uma tabela temporária no MySQL, permite realizar testes ou serviços em uma entidade transitória, sem se preocupar em limpar a sujeira depois.
Ao desconectar-se do servidor, as tabelas temporárias são automaticamente descartadas.
Captur de tela - mysql create temporary table

Quando é útil usar tabelas temporárias no MySQL

Algumas operações requerem que a existência de algumas informações seja curta — e que elas sejam removidas, quando não mais forem necessárias.
A parte da remoção pode ser feita automaticamente pelo MySQL.
Você não precisa se lembrar de apagar uma tabela, que não tem mais serventia, com o comando DROP TABLE.
Para isto, basta criar uma tabela, com a opção TEMPORARY, assim: CREATE TABLE TEMPORARY Nome_da_tabela.
Este assunto foi abordado en passant no artigo Como criar tabelas no MySQL. Vamos procurar nos aprofundar um pouco mais neste assunto, aqui.

Como criar tabelas temporárias no MySQL

Você pode criar tabelas temporárias, mais ou menos, da mesma forma que cria as normais. Só que vai acrescentar a opção TEMPORARY.
Se eu quiser criar uma tabela temporária com o nome de ClientesCidadesTemp a partir da tabela ClientesCidades, uso o seguinte comando:

CREATE TEMPORARY TABLE ClientesCidadesTemp SELECT * FROM ClientesCidades;
Query OK, 200 rows affected (0.27 sec)
Records: 200  Duplicates: 0  Warnings: 0

Use o comando EXPLAIN para verificar a nova tabela temporária:

EXPLAIN ClientesCidadesTemp;
+---------------+-----------------------+------+-----+---------+-------+
| Field         | Type                  | Null | Key | Default | Extra |
+---------------+-----------------------+------+-----+---------+-------+
| id            | mediumint(8) unsigned | NO   |     | 0       |       |
| NomeCliente   | varchar(255)          | YES  |     | NULL    |       |
| IdadeCliente  | mediumint(9)          | YES  |     | NULL    |       |
| CidadeCliente | varchar(255)          | YES  |     | NULL    |       |
| CredCliente   | mediumint(9)          | YES  |     | NULL    |       |
+---------------+-----------------------+------+-----+---------+-------+
5 rows in set (0.03 sec)

Entenda melhor as tabelas temporárias

Se há vantagens em usar tabelas temporárias, por outro lado, há algumas características às quais você precisa estar atento:

  • Se você quiser reusar uma tabela temporária, dentro da mesma sessão, vai precisar removê-la, antes. Tentar criar uma segunda tabela com o mesmo nome da primeira, temporária, vai resultar em erro, caso ela não tenha sido apagada.
  • Uma das propriedades das tabelas temporárias permite que possam ser criadas com o mesmo nome de uma outra tabela permanente e preexistente.
    Neste caso, a tabela permanente fica “escondida”, durante a sessão ou enquanto a temporária ainda existir.
    Isto pode ser útil para criar e testar queries, usando o nome de uma tabela existente, sem afetá-la.
  • Algumas APIs, suportam conexões persistentes em um ambiente web. O seu uso previne que as tabelas temporárias expirem, como já é de esperar, ao fim do script — e possam continuar a ser usadas por outros scripts.
  • O MySQL é um ambiente de servidor de banco de dados com capacidade para atender a múltiplos clientes, cada qual com sua sessão.
    Desta forma, é possível que cada cliente tenha aberto uma tabela temporária. E nada impede que elas tenham os mesmos nomes — cada qual na sua sessão.
  • Há vários outros cuidados a serem tomados, quando estamos lidando com um ambiente de tabelas temporárias.
    Se o seu script cria e modifica tabelas temporárias que “escondem” tabelas permanentes com o mesmo nome, é necessário criar rotinas que verifiquem e testem se você ainda está trabalhando na tabela temporária, como esperado.
    Se um dos programas cliente fizer uma reconexão, após uma queda, você poderá alterar uma tabela permanente, em vez de uma temporária.

Referências:
Leia mais sobre como fazer conexões (persistentes) a um servidor MySQL a partir de um script PHP.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia. Fã de séries, como "Rick and Morty" e "BoJack Horseman". Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *