Eu tenho uma tabela com uma coluna de identidade. Durante o desenvolvimento, excluo as linhas de tempos em tempos e as adiciono novamente. Mas os valores de IDENTITY sempre aumentaram e não começaram de 1 quando os adicionei novamente. Agora minha identificação passa de 68 -> 92 e isso trava meu código.
Como redefinir o valor de IDENTITY?
Respostas:
Você pode redefinir o valor da identidade
Portanto, da próxima vez que você inserir no TableName, o valor da identidade inserido será 1.
Quando você exclui linhas da tabela, ele não redefine o valor da Identidade, mas continua aumentando. Assim como o que aconteceu no seu caso.
Agora, quando você truncar a tabela, ele redefinirá o valor de Identidade para o valor original da Tabela.
Consulte: SQL SERVER - DELETE, TRUNCATE e RESEED Identity para obter um exemplo detalhado e uma boa explicação sobre a diferença entre Truncar e Excluir
fonte
O Kin mostrou como você pode redefinir o valor de IDENTITY, mas fora de um ambiente de desenvolvimento quando você está realmente removendo todos os dados, por que você precisa fazer isso?
Espero que você não pretenda manter uma sequência contígua de valores de IDENTIDADE quando estiver em produção. E espero que você não esteja realmente escrevendo seu código para codificar os valores de IDENTITY. Se esses são valores de ID significativos, você deve parar de usar a propriedade IDENTITY.
Existem algumas coisas que impedirão que isso aconteça:
não será corrigido até que o SQL Server 2014nunca seja corrigido (a menos que você use um sinalizador de rastreamento não documentado e muito caro) pelo qual uma reinicialização parecerá descartar até 1000 valores da sua coluna IDENTITY . O bug no Connect sugere que isso é restrito a eventos de failover envolvendo grupos de disponibilidade, mas posso garantir que o bug é muito mais amplo que isso.Em resumo, se você se preocupa com lacunas ou deseja atribuir um significado específico a esses valores, pare de usar IDENTITY. Solte e recrie a tabela e, quando você precisar excluir os valores e preencher novamente, execute uma atualização ou insira os valores codificados dessa coluna.
Como um aparte, chave primária e identidade não são a mesma coisa. Uma coluna de identidade não é uma chave primária, a menos que você a defina explicitamente como tal, e certamente você pode ter uma chave primária que não seja uma coluna de identidade.
fonte
Se você precisar apenas eliminar as últimas linhas que não seguiram o valor incremental de um campo de identidade, existe uma maneira fácil e segura:
e você está pronto.
fonte