Usando o comando SET IDENTITY_INSERT para preencher lacunas deixadas pelo comando DELETE.

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!

Deixe um comentário