Olá pessoal, vou abrir o ano de 2015 com uma dica simples, a qual, em algum momento vai ser providencial ao time que cuida do ambiente de dados de qualquer organização. Já necessitei usar a dica que irei postar aqui, então é uma obrigação compartilhar com vocês essa experiência. Sei que muitos iniciantes e talvez até experientes na área de banco de dados podem não conhecer a opção SET IDENTITY_INSERT, mas farei um breve resumo dizendo o que significa e para que serve.
Quem não conhece a propriedade IDENTITY? Essa é uma propriedade importante no SQL Server e na modelagem de dados, pois é através dela que garantimos o auto incremento, ou seja, permite que um número único possa ser gerado quando um novo registro é inserido em uma tabela.
Não irei entrar em muitos detalhes, nem nos méritos de outras propriedades e estruturas que podem ser modeladas em um banco de dados que atenderia os mesmos resultados da propriedade IDENTITY, pois fugiria do objetivo do post. O intuito é de mostrar o uso da opção SET IDENTITY_INSERT na prática e cada um interpretar a melhor maneira de usar em seu ambiente caso surja a necessidade.
Bem, vamos deixar de conversa fiada e irmos direto ao assunto.
A opção SET IDENTITY_INSERT em sua essência significa, de acordo com a Microsoft – comando que permite inserir valores explícitos na coluna de identidade de uma tabela. Normalmente quando temos na tabela uma coluna com a propriedade IDENTITY definida, não é possível inserimos registros de forma direta naquela coluna declarando qual o valor que queremos como ID.
Veja no exemplo do comando abaixo:
INSERT INTO dbo.Tool (ID, Name) VALUES (3, ‘Garden shovel’); GO
É neste momento que se faz o uso do comando SET IDENTITY_INSERT. Seguindo o exemplo acima seria possível obtermos o resultado esperado 3 para a coluna ID habilitando a opção para ON.
Veja no exemplo do comando abaixo:
SET IDENTITY_INSERT dbo.Tool ON; GO INSERT INTO dbo.Tool (ID, Name) VALUES (3, ‘Garden shovel’); GO SELECT * FROM dbo.Tool; GO
Seguindo os passos apresentados seria possível incrementar o valor 3 tranquilamente e sem muita dificuldade. Só lembrando que é necessário depois, desabilitar a opção após o uso.
Só pra deixar claro qual o cenário que precisei utilizar o comando, foi para o preenchimento na tabela de uma lacuna nos valores de identidade causados por uma instrução DELETE. Com o uso dessa opção mantive a tabela do banco de dados organizada.
Espero ter ajudado.
Até a próxima!