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!