1
resposta

[Dúvida] Como apagar tabela temporária # existente para recriá-la?

IF OBJECT_ID('LISTA_VENDEDORES', 'U') IS NOT NULL DROP TABLE #LISTA_VENDEDORES;
CREATE TABLE #LISTA_VENDEDORES (NOME VARCHAR(100));

Resultou em:

Mensagem 2714, Nível 16, Estado 6, Linha 4
Já existe um objeto com nome '#LISTA_VENDEDORES' no banco de dados.

O 'U' é indício de tabela, mas porque não reconheceu minha tabela temporária? Qual valor de sys-objects devo digitar? Minha tabela é interna ou externa? https://learn.microsoft.com/pt-br/sql/relational-databases/system-catalog-views/sys-objects-transact-sql?view=sql-server-ver16

1 resposta

Oi, Akhenaton. Como você está?

No SQL Server, as tabelas temporárias são armazenadas em um banco específico: o tempdb. Por isso, para se referenciar a uma tabela temporária, é necessário utilizar o nome do banco de dados em que ela está como prefixo, assim:

IF OBJECT_ID('tempdb..#LISTA_VENDEDORES') IS NOT NULL 
    DROP TABLE #LISTA_VENDEDORES;

As tabelas temporárias são sempre internas e existem apenas na sessão em que elas foram criadas. Ao se encerrar a sessão, a tabela é automaticamente excluída.

Teste dessa forma e me conte se deu certo. Lidar com tabelas temporárias no SQL Server é um pouquinho diferente mesmo de quando lidamos com tabelas globais, não se preocupe com os erros!

Abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!