terça-feira, 23 de junho de 2009

Com mudar ou resetar os valores de um identity?

Existem situações que podem fazer com que um campo identity, possa ficar com "buracos". Por exemplo se deltetarmos um ou mais registros de uma tabela que possue um campo do tipo identity. Veja o exemplo abaixo:

create table nova_tabela(
codigo int identity(1,1),
nome varchar(10)
)

go

insert into nova_tabela (nome) values ('rodrigo')
insert into nova_tabela (nome) values ('daniel')
insert into nova_tabela (nome) values ('paulo')

delete from nova_tabela where codigo=3

O próximo registro a ser inserido na tabela, terá o valor para o campo código igual 4 e não 3, o que faz com que o sequêncial tenha "buracos".

Para ajustar o valor do identity, podemos usar o DBCC CHECKIDENT com a sub-funcionalidade RESEED. Veja o exemplo:

DBCC CHECKIDENT('nova_tabela',RESEED, 2)

insert into nova_tabela (nome) values ('paulo')

Faça select em "nova_tabela", e verifique que o registro inserido ficou com o valor código igual a três respeitando a sequência. Isso aconteceu pois ajustamos através do DBCC CHECKIDENT o valor do identity da tabela para dois, fazendo com que o próximo registro tenha o valor 3.

Até a próxima!

Nenhum comentário:

Postar um comentário

Leave your comment here!