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

Como calcular o total acumulado com SQL
31/07/2022SQL

Como calcular o total acumulado com SQL

Veja como fazer uma soma cumulativa utilizando SQL

Saiba mais...
Identificando as tabelas mais utilizadas no SQL SERVER
20/10/2019SQL

Identificando as tabelas mais utilizadas no SQL SERVER

Veja quais as tabelas mais utilizadas do seu banco de dados

Saiba mais...

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