MariaDB - Tabelas Temporárias

Algumas operações podem se beneficiar de tabelas temporárias devido à velocidade ou dados descartáveis. A vida de uma tabela temporária termina com o término de uma sessão, quer você a utilize no prompt de comando, com um script PHP ou por meio de um programa cliente. Também não aparece no sistema de uma maneira típica. O comando SHOW TABLES não revelará uma lista contendo tabelas temporárias.

Crie uma tabela temporária

A palavra-chave TEMPORARY em uma instrução CREATE TABLE gera uma tabela temporária. Reveja um exemplo fornecido abaixo -

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

Ao criar uma tabela temporária, você pode clonar tabelas existentes, ou seja, todas as suas características gerais, com a cláusula LIKE. A instrução CREATE TABLE usada para gerar a tabela temporária não confirma transações como resultado da palavra-chave TEMPORARY.

Embora as tabelas temporárias sejam separadas das não temporárias e caiam no final de uma sessão, elas podem ter certos conflitos -

  • Às vezes, eles entram em conflito com tabelas temporárias fantasmas de sessões expiradas.

  • Às vezes, eles entram em conflito com nomes de sombra de tabelas não temporárias.

Note - As tabelas temporárias podem ter o mesmo nome de uma tabela não temporária existente porque o MariaDB a vê como uma referência de diferença.

Administração

MariaDB requer a concessão de privilégios aos usuários para a criação de tabelas temporárias. Utilize uma instrução GRANT para conceder este privilégio a usuários não administradores.

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

Solte uma mesa temporária

Embora as tabelas temporárias sejam essencialmente removidas no final das sessões, você tem a opção de excluí-las. Eliminar uma tabela temporária requer o uso da palavra-chave TEMPORARY e as melhores práticas sugerem eliminar tabelas temporárias antes de qualquer não temporária.

mysql> DROP TABLE order;