Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

As tabelas temporárias do SQL Server armazenam dados temporariamente. Você pode executar as mesmas operações — como SELECT, INSERT, DELETE e UPDATE — em uma tabela temporária como faria em uma tabela SQL regular.

As tabelas temporárias residem no banco de dados tempdb e são visíveis apenas durante a duração da conexão. Quando você encerra a conexão, o SQL Server exclui a tabela temporária. Você também pode excluí-lo explicitamente a qualquer momento.

Tipos de tabelas temporárias do SQL Server

Existem dois tipos de tabelas temporárias do SQL Server: local e global.

Tabela de temperatura local

Uma tabela temporária local é visível apenas para a conexão que a criou. Quando essa conexão termina, ou o usuário se desconecta do servidor SQL Por exemplo, uma tabela temporária local é descartada automaticamente.

Para criar uma tabela temporária local, use um único símbolo de hash (#) no início do nome da tabela com a instrução CREATE TABLE. Aqui está a sintaxe.

CRIARMESA#TempTabela (
Coluna1 INT,
Coluna2 VARCHAR(50)
);

Por exemplo, o código a seguir cria uma tabela temporária chamada TempCustomer com um campo de nome e email.

CRIARMESA#TempCliente (
ID int NÃO NULL CHAVE PRIMÁRIA
Nome Completo VARCHAR(50),
E-mail VARCHAR(50)
);

Tabela de temperatura global

Uma tabela temporária global é uma tabela temporária visível para todas as conexões e usuários. O SQL Server irá descartá-lo quando todas as conexões e usuários que fazem referência à tabela forem desconectados.

Para criar uma tabela temporária global, prefixe o nome da tabela com hashes duplos (##) e use a instrução CREATE TABLE.

CRIARMESA##TempTable (
Coluna1 INT,
Coluna2 VARCHAR(50)
);

O código a seguir cria uma tabela temporária global chamada TempCustomer.

CRIARMESA##TempCustomer (
ID int NÃO NULL CHAVE PRIMÁRIA
Nome Completo VARCHAR(50),
E-mail VARCHAR(50)
);

Este código é semelhante ao exemplo da tabela temporária local, apenas com dois símbolos hash em vez de um. Agora você pode usar comandos SQL padrão para adicionar ou manipular os dados na tabela temporária.

Como derrubar uma tabela temporária

A instância do SQL Server elimina automaticamente uma tabela temporária quando todos os usuários que fazem referência a ela se desconectam. Como prática recomendada, você sempre deve descartar explicitamente suas tabelas temporárias para liberar a memória do tempdb.

Para descartar uma tabela temporária, use a instrução DROP TABLE IF EXISTS seguida do nome da tabela temporária.

Veja como descartar a tabela #TempCustomer:

DERRUBARMESASEEXISTE#ClienteTemp

Use o mesmo código, mas troque o nome da tabela para descartar uma tabela temporária global.

DERRUBARMESASEEXISTE##ClienteTemp

Usos típicos de tabelas temporárias SQL

As tabelas temporárias são úteis quando você precisa armazenar resultados intermediários de consultas complexas que precisam ser processadas posteriormente. Por exemplo, ao criar relatórios, pode ser necessário criar tabelas temporárias para armazenar resultados de consulta de vários bancos de dados. Você pode gerar o relatório final executando uma consulta nas tabelas temporárias.

Outro cenário em que as tabelas temporárias são úteis é quando você precisa dos resultados da consulta de uma tabela para executar outra consulta. Você pode armazenar os resultados em uma tabela temporária e referenciá-la em sua nova consulta. Essencialmente, você está usando a tabela temporária como uma tabela de trabalho ou buffer para armazenar os dados necessários para executar uma tarefa específica.

Usando tabelas temporárias no SQL Server

Você pode usar tabelas temporárias do SQL Server para armazenar e processar dados temporariamente. Existem dois tipos de tabelas temporárias, locais e globais. Uma tabela temporária local é visível para a conexão na qual foi criada, enquanto uma tabela temporária global é visível em todas as conexões.

As tabelas temporárias são destruídas automaticamente quando você se desconecta da instância do servidor. No entanto, para economizar memória, você deve sempre descartá-los após o uso.