SQLServer – Inserir valor para uma coluna identidade manualmente

SQL

Se você tem uma tabela em seu banco de dados SQLServer com uma coluna configurada como identidade + incremento, precisa fazer uma inserção de dados e informar manualmente seu valor, então este post é para você.

Vamos considerar por exemplo um cenário onde você tenha uma tabela de Alunos e uma coluna Id Id que é incrementada automaticamente, ou seja, a coluna Id está configurada como identidade. Quando operações de exclusão são executadas ficamos com alguns “buracos” entre os Ids desta tabela. Eventualmente você pode querer utilizar um destes Ids que estão disponíveis mas por padrão, como a coluna Id foi configurada como identidade + incremento ela será preenchida com o novo valor da sequencia configurada.

Para fazer a inserção manual da identidade você vai precisar:

  1. Ativar a inserção de identidade para a tabela onde será feita inserção do registro;
  2. Realizar a inserção do registro, fornecendo a identidade;
  3. Desativar a inserção da identidade da tabela;

E isso na verdade é bem simples, veja cada item da lista anterior em um exemplo prático:

 
SET IDENTITY_INSERT Alunos ON
INSERT INTO Alunos (Id, Nome) VALUES (3, 'Pedro Henrique')
SET IDENTITY_INSERT Alunos OFF

No exemplo acima estamos inserindo a coluna Id com o valor 3 manualmente. É importante ressaltar que de acordo com a documentação, a operação IDENTITY_INSERT pode ser feita apenas para uma tabela de cada vez em um mesmo banco de dados.