Sql Server: Copiando dados para uma Tabela temporária

Sql Server: Copiando dados para uma Tabela temporária

Overview

Neste guia prático e descomplicado, mergulhamos no universo das tabelas temporárias - essenciais para testar mudanças no banco de dados sem o risco de alterar informações vitais. Com uma pitada de humor e exemplos claros, apresentamos como criar tabelas temporárias e clonar estruturas existentes. Perfeito para quem busca segurança e praticidade em testes de banco de dados.

Por vezes nos encontramos em situações em que é necessário realizar testes no banco de dados, mas não podemos simplesmente apagar, inserir ou remover dados. Para estas situações, existem tabelas temporárias (para todas as outras, existe MasterCard! não, pera…)

Estas situações (provavelmente) poderiam ser evitadas com ações preventivas e uma boa estrutura no banco, mas este não é o tema deste post.

A grande vantagem da tabela temporária é que podemos criá-las sem maiores problemas (desde que você tenha permissões para isso), a desvantagem é que você tem que criar uma tabela nova ou recriar a estrutura de uma tabela existente, caso queira copiar dados de uma para a outra.

A forma tradicional de se criar uma tabela temporária é a seguinte:

DECLARE  #clientes TABLE(              
  id INT,    
  nome varchar(25),    
  sobrenome varchar(50) ,    
  email varchar(100)    
)

Criar uma tabela desta forma é bem simples, mas a tarefa fica inviável se estivermos tentando recriar uma tabela muito grande ou complexa.

A consulta abaixo resolve este problema. Com ela, podemos simplesmente “clonar” a estrutura de colunas de uma tabela para uma temporária:

select top 0 *
    into #clientes
    from clientes

Com esta consulta, a estrutura da tabela clientes (original) será copiada para a tabela #clientes (temporária, criada no momento do select.

Após este comando, você ainda precisa copiar os dados da tabela original para a tabela temporária.

INSERT INTO #clientes (id, nome, sobrenome, email) 
    SELECT id, nome, sobrenome, email
    FROM clientes

Pronto! Agora você copiou todos os registros da tabela física para a tabela temporária.