|
||
|
|
Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Joga.la
» Início » Desenvolvimento » Banco de dados e SQL » SQL Server: Geração de seqüenciais de forma automática
--> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 20/09/2007SQL Server: Geração de seqüenciais de forma automática
Redefinição de valores IdentityAlgumas vezes pode ser necessário "zerar" o Identity ou definir um novo valor inicial para novos registros. A forma mais intuitiva de tentar "zerar" uma coluna Identity é excluir todos os registros de uma tabela (situação típica durante um Deploy para o ambiente de produção). O fato de executar um DELETE contra uma tabela não irá "zerar" o Identity. Da mesma forma que nos exemplos anteriores, o DELETE de um registro não provoca o reaproveitamento de seqüenciais, a exclusão de todos os registros também não tem efeito para provocar esse reaproveitamento. Uma das forma de se fazer isso, é através do comando TRUNCATE TABLE. Esse comando possibilita que o Identity seja reiniciado, mas em contrapartida exclui todos os registros de uma tabela desde que essa possua chaves estrangeiras e nem repassar suas chaves primárias para outras tabelas. Se isso não for possível, o comando irá gerar um erro. Esse comando é representado conforme script abaixo: -- Criação de uma tabela com Identity -- Inserção de registros -- Verificação do Identity -- Exclusão do registros com TRUNCATE TABLE -- Inserção de registros -- Verificação do Identity Embora o comando TRUNCATE possa fazer isso, o mais "correto" seria utilizar o comando DBCC CHECKIDENT. Esse comando permite tanto checar o valor atual de uma coluna Identity para uma tabela específica como alterar esse valor se necessário. O exemplo abaixo, mostra como utilizar esse comando para alterar o valor de uma coluna Identity. -- Criação de uma tabela com Identity -- Inserção de registros -- Verificação do Identity -- Exclusão dos registros -- Reiniciar o Identity -- Inserção de registros -- Verificação do Identity No exemplo acima, são inseridos dois alunos (Daniel e Fernando) com IDs 1 e 2 e em seguida é realizado um DELETE. Para reiniciar o Identity, o comando DBCC CHECKIDENT é executado com um de seus parâmetros igual a zero. O parâmetro zero não quer dizer que o Identity está sendo "zerado". O número zero é usado porque no terceiro parâmetro é preciso usar o valor desejado do Identity decrescido de uma unidade. Se desejássemos que o Identity reinicasse em 3, teríamos que executar DBCC CHECKIDENT('tblAlunos',RESEED,2). ![]() |
|
|