segunda-feira, 20 de abril de 2009

Criando tabelas temporárias rapidamente no Sql Server

Podemos criar tabelas temporárias com rapidez no Sql Server utilizando o comando INTO.

Esta funcionalidade pode ser muito útil em situações em que precisamos fazer o deploy de alguma aplicação ou relatório, ou para implementações de performance em querys que estão muito lentas.

Vejamos um exemplo com o banco de dados Northwind, banco de exemplo que é disponibilizado junto com as instalações do SQL Server:

SELECT CustomerID
,CompanyName
,ContactName
,ContactTitle
,Address
,City
,Region
,PostalCode
,Country
,Phone
,Fax
INTO #TMP_CUSTOMERS
FROM Northwind.dbo.Customers


Agora temos uma tabela temporária criada como o nome #tmp_customers. Observe o caracter # adicionado antes do nome da tabela. Este caracter indica que esta tabela está disponível apenas para esta sessão do Sql Server, ou seja, está disponível apenas para a janela do Query Analyzer onde o script foi executado.

Podemos fazer esta tabela ficar disponível para todas as sessões, acrescentando outro caracter # ao final do nome da tabela (#tmp_customers#).

Até a próxima.

4 comentários:

  1. Podemos criar tabelas "físicas" (atemporais), no banco de dados, removendo os caracteres "#".

    ResponderExcluir
  2. Ola,

    nessa tabela temporária, já é criado a chave primaria na tabela temporária conforme os atributos do select?

    Se eu criar uma tabela com #nometabela# que sera vista em todas as sessões quando ela vai ser excluida.

    Obrigado e parabéns pelo post.

    ResponderExcluir
  3. Paulo,

    Aqui cabe uma correção. Para tabelas multi-sessão, é necessário colocar os caracteres na frente "##".

    Esta tabela é eliminada apenas quando a sessão original é finalizada ou através de um comando explícito (drop table).

    Abs

    ResponderExcluir
  4. ótimo Rodrigo, mas como crio uma tabela co select into trazendo as PK's e identity caso tiver??

    ResponderExcluir

Leave your comment here!