Sql Server: Copiando dados para uma Tabela temporária

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.

 

 

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Banco de Dados, Dev and tagged , , , , , .