Alterar a próxima atribuição de numeração automática sem recriar tabela inteira, MS SQL Server 2000

2

Eu tenho uma tabela com uma chave primária que é um incremento automático de número automático int. Seu campo de tipo de chave primária padrão.

Devido a um cenário complicado com um banco de dados previamente replicado, agora eu já tenho linhas na tabela com valores até 410000, mas o relatório de valor de IDENT_CURRENT é de apenas 4.0006 ou mais. Agora, eu tenho um código que está tentando inserir registros e explodindo porque o banco de dados acha que deveria usar o número 400060 e, no entanto, eu já tenho um registro com esse id. Kaboom.

Eu procurei configurar manualmente o próximo número no designer de tabelas, mas ao visualizar o script que ele gera, ele criará uma tabela duplicada, copiará todos os registros para ela, eliminará a tabela antiga, renomeá-la, algumas coisas com restrições, etc. É tudo muito assustador quando eu só preciso de uma mudança simples.

Existe alguma maneira de alterar esse valor que não cause tantas alterações desnecessárias?

    
por Matt Dawdy 06.09.2010 / 05:32

2 respostas

4

use o seguinte na sua tabela

dbcc checkident ('dbo.table', reseed, 410000)

altera o valor de identidade atual para 410000, portanto, a próxima inserção será qualquer que seja o icrement mais 410000 (assim, 410001 se o incremento for 1).

    
por 07.09.2010 / 20:44
1

E algo como o seguinte, que apenas remove os registros ofensivos, e os reinsere de uma tabela temporária?

SELECT * INTO #temptable FROM tablename WHERE ID_FLD>400059;

DELETE * FROM tablename WHERE ID_FLD>400059;

SELECT * INTO tablename FROM #temptable; 
    
por 06.09.2010 / 05:46

Tags