Compartilhar via


SQL Server: Usando DBCC checkident para reiniciar um campo identity

Em muitas empresas no dia de hoje, usamos tabelas com campos auto incrementais ( IDENTITY) , com isso muitas vezes precisamos por algum motivo ou outros, reiniciar a contagem j? que ao deletar um registo o campo continuar a contar mesmo que ele nao esteja mais na tabela. No exemplo abaixo vamos ver na pratica como reiniciar essa contagem.

Vamos criar uma tabela aonde podemos analisar essas situa?oes e aprender a usar de uma forma facil e pratica o DBCC CHECKIDENT.

-- Criando uma tabela Pessoa:

CREATE TABLE Pessoa (

    id  INT IDENTITY (1,1)

  , Nome  VARCHAR (10)

  , Sobrenome  VARCHAR (10))

-- Vamos colocar alguns valores dentro dessa tabela

 

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES  ('Joao','Oliveira') 

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES  ('Maria','Jos?') 

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES  ('Antonio','Gullar') 

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES ('Isabel','Silva')

-- Vamos ver como ficou dando um select 

 

SELECT 

   id

, Nome

,Sobrenome 

FROM Pessoa 

Notamos que criamos 4 registros e um deles acrescentou n?meros crescentes, agora vamos deletar esses registros  e em seguida vamos colocar mais alguns outros.  

DELETE FROM Pessoa

-- Agora vamos conferir se apagou mesmo.

SELECT 

   id

, Nome

,Sobrenome 

FROM Pessoa 

 

-- Pois bem, vamos agora colocar mais registros e em seguida ver como ficou o id

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES ('Jos?','falcane')

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES  ('Rafael','Santos') 

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES ('Joana','Pinto') 

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES ('Pablo','Carvalho') 

-- Podemos

SELECT 

   id

, Nome

,Sobrenome 

FROM Pessoa 

Notamos agora que mesmo deletando todos os registro, o campo que est? com auto-incremental ainda continua contando os registros em ordem crescentes. 

Algumas vezes temos que ZERAR essas tabelas... depois de bater muito a cabe?a deletando a tabela para pegar o inicio da numera?ao, achei um comando que faz essa fun?ao,  com o comando a baixo podemos iniciar o campo que est? com auto-incremental podendo at? iniciar pelo numero que quisermos.

-- Usando o DBCC CHECKIDENT

DBCC CHECKIDENT('[tabela]', RESEED, 0)

Depois desse comando pode voltar a inserir alguns registros e ver o resultado.

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES   ('Jos?','falcane')

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES  ('Rafael','Santos') 

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES  ('Joana','Pinto')

INSERT INTO Pessoa  (Nome,Sobrenome) VALUES  ('Pablo','Carvalho') 

-- Vamos ver como ficou agora!!

SELECT 

   id

, Nome

,Sobrenome 

FROM Pessoa 

nome 

FROM Pessoa 

SELECT 

   id

, Nome

,Sobrenome 

FROM Pessoa