sexta-feira, 13 de agosto de 2010

Cannot add identity column, using the SELECT INTO statement, to table...

Sintoma: Como apresentei em um artigo anteriormente do TSQLMASTER.NET, podemos acrescentar uma coluna identity em uma tabela temporária através do comando INTO. Porém, realizar este hack com uma tabela que já tem uma coluna identity, resulta em erro. Veja o exemplo abaixo:

 

create table TesteRodrigo(

  codigo int identity(1,1),

  nome nvarchar(100)

)

go

 

insert into TesteRodrigo(nome) values ('Rodrigo')

insert into TesteRodrigo(nome) values ('Carol')

 

select

      identity(int,1,1) as [Sequêncial],

      *

into #testeee

from

      TesteRodrigo

 

O script acima gera o seguinte erro:

 

Msg 8108, Level 16, State 1, Line 1

Cannot add identity column, using the SELECT INTO statement, to table '#testeee', which already has column 'codigo' that inherits the identity property.

 

 

Causa:  Como o comando INTO cria uma tabela com a mesma estrutura da tabela declarada no FROM da query, e uma tabela pode conter apenas um campo identity, o parser gera o erro.

 

Resolução:  Podemos resolver o problema omitindo a coluna identity da query:

 

select

      identity(int,1,1) as [Sequêncial],

      nome

into #testeee

from

      TesteRodrigo

 

O problema é se desejarmos que a coluna seja apresentada junto na tabela temporária.

 

Mais informações:

 http://www.sql-server-performance.com/faq/cannot_add_identity_column_p1.aspx

 

 

Até a próxima!

 

Nenhum comentário:

Postar um comentário

Leave your comment here!