Inserir valores em campos do tipo autonumeração no SQL Server

Inserir valores em campos do tipo autonumeração no SQL Server

Campos do tipo autonumeração (IDENTITY) geralmente são utilizados como chave primária em nossas tabelas. Quando você insere um novo registro, este campo automaticamente receve um valor incremental em relação ao registro anterior. Portanto, por padrão, você não pode inserir um valor a sua escolha neste campo.

Apenas colunas com o tipo de dados INT, TINYINT, SMALLINT e BIGINT podem ser autonumeráveis. Apenas um campo deste tipo pode existir por tabela.

Qual a necessidade de inserir nossa própria numeração neste campo?

Se você fizer uma cópia da sua tabela, para fins de backup, excluir alguns registros, e depois de alguns dias quiser copiar de volta os registros excluídos para a tabela original, os registros vão ganhar novos códigos. 

Copiar os registros mantendo os códigos originais é algo que exige menos esforço do que fazer o "restore" do backup daquela tabela.

Como adicionar os registros mantendo os códigos originais?

Vamos ver um exemplo de como fazer isso. Mas primeiro, vamos criar a nossa tabela.

CREATE TABLE minha_tabela

(

 ID int IDENTITY,

 nome varchar(100),

 email varchar(200)

)

 

Agora vamos inserir alguns registros:

INSERT INTO minha_tabela(nome, email) VALUES( Bins , teste@teste.com.br )

INSERT INTO minha_tabela(nome, email) VALUES( Nome1 , teste@teste.com.br )

INSERT INTO minha_tabela(nome, email) VALUES( Nome2 , teste@teste.com.br )

INSERT INTO minha_tabela(nome, email) VALUES( Nome3 , teste@teste.com.br )

 

Você deve ter agora registros de 1 a 4 em sua tabela. Vamos agora apagar o registro número 2.

DELETE FROM minha_tabela WHERE id = 2

Agora vamos desativar a autonumeração do campo, para inserir novamente um registro com o código 2

 

SET IDENTITY_INSERT minha_tabela OFF

INSERT INTO minha_tabela (ID,nome,email) VALUES(2, Nome Novo , teste@teste.com.br )

SET IDENTITY_INSERT minha_tabela ON

 

Utilizando o comando SET IDENTITY_INSERT com o valor OFF, podemos adicionar o número no campo ID. Para voltar ao comportamento padrão, basta definir esta propriedade como ON

Outro recurso que permite manipular a numeração do campo é alterar o número inicial. 

DBCC checkident (minha_tabela, RESEED, 10)

Com este comando, nossa tabela vai ter o número inicial definido como 10. Desta forma, se você adicionar um novo registro, ele vai passar a ser o código 11

 

Outros conteudos que podem ser de seu interesse

SQL vs Mongo - Operações básicas
08/12/2019SQL

SQL vs Mongo - Operações básicas

Um comparativo entre as operações básicas no SQL e seus equivalentes no Mongo

Saiba mais...
Como agrupar vários registros em uma única coluna com SQL
26/06/2022SQL

Como agrupar vários registros em uma única coluna com SQL

Veja como agrupar várias linhas em uma única coluna com SQL

Saiba mais...

Conteúdo sobre banco de dados sem complicação!