Olá pessoal,
Hoje darei uma dica simples, melhor dizendo mais que uma dica é um script pronto para você executar e fazer um teste rápido com relacão a inclusão de registros informando o valor em uma coluna Identity no SQL Server.
Este é um pequeno exemplo de como incluir registros informando o valor de uma coluna identity no SQL Server. Basicamente o script irá:
- Criar uma tabela temporária.
- Inserir um registro na tabela temporária sem informar o valor para o identity.
- Habilitar o modo em que podemos informar o valor para a coluna identity.
- Incluir dois registros passando o valor para a coluna identity.
- Desabilitar o modo em que podemos informar o valor para a coluna identity.
- Inserir um registro na tabela temporária sem informar o valor para o identity. (Novamente para verificarmos que a retomada da contagem do identity acontece corretamente).
- Deletar a tabela temporária.
Veja o exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
CREATE TABLE #TempTable ( Id INT IDENTITY, Name VARCHAR(50) ) --Verificar a tabela vazia SELECT * FROM #TempTable --Inserir a primeira row sem o identity INSERT INTO #TempTable (Name) VALUES ('Thiago Satoshi Suzuki - 1') --Verificar o registro inserido SELECT * FROM #TempTable --Setar o Identity insert para informarmos o Id SET IDENTITY_INSERT #TempTable ON INSERT INTO #TempTable (Id, Name) VALUES (5, 'Thiago Satoshi Suzuki - 5') INSERT INTO #TempTable (Id, Name) VALUES (8, 'Thiago Satoshi Suzuki - 8') --Verificar os 3 registros SELECT * FROM #TempTable --Setar o Identity Insert OFF para nao informarmos o Id SET IDENTITY_INSERT #TempTable OFF --Inserir novos registros sem O identity INSERT INTO #TempTable (Name) VALUES ('Thiago Satoshi Suzuki - 9') --Verificar todos os registros SELECT * FROM #TempTable --Apagando a tabela temporaria DROP TABLE #TempTable |
Isto é o que aconteceria se a gente tentasse informar o valor do identity sem setar o IDENTITY_INSERT para ON.
Msg 544, Level 16, State 1, Line 1 Cannot insert explicit value for identity column in table ‘#TempTable__________________________________________________________________________________________________________000000001076’ when IDENTITY_INSERT is set to OFF.
Para mais detalhes sobre o identity_insert clique no link a seguir:
SET IDENTITY_INSERT
Obrigado por ler este post.
Curta e compartilhe se se você gostou!
Gostaria de ver a versão inglesa deste post?
Clique na bandeira inglesa ->
Ótimo artigo!!! Simples e consistente!
Parabéns!! Já virei seguidor.