web-dev-qa-db-fra.com

Réinitialiser l'auto-incrémentation dans Microsoft SQL Server 2008 R2

J'ai créé une clé primaire pour être auto-incrémentée.

  • J'ai ajouté deux lignes: ID=1, ID=2
  • J'ai supprimé ces deux lignes.
  • J'ai ajouté une nouvelle ligne, mais l'ID de la nouvelle ligne était: ID=3

Comment réinitialiser ou redémarrer l'auto-incrémentation à 1?

32
victorio

Si vous utilisez DBCC CHECKIDENT commande:

 DBCC CHECKIDENT ("YourTableNameHere", RESEED, 1);

Mais utilisez avec ATTENTION! - cela réinitialisera simplement le IDENTITY à 1 - de sorte que vos prochaines insertions obtiendront les valeurs 1, puis 2, puis 3 -> et vous aurez un conflit avec votre valeur préexistante de 3 ici!

IDENTITY il suffit de classer les nombres dans un ordre consécutif - cela ne fait [~ # ~] pas [~ # ~] en aucune façon assurez-vous il n'y a pas de conflits! Si vous avez déjà des valeurs - ne pas réamorcez à une valeur inférieure!

58
marc_s

J'utilise SQL Server 2012 et la DBCC CHECKIDENT ("YourTableNameHere", RESEED, 1) provoque une valeur de 2 dans l'encart suivant.

Donc, pour SQL Server 2012, modifiez le 1 à 0 pour obtenir une valeur de 1 pour votre prochaine notice:

DBCC CHECKIDENT ("YourTableNameHere", RESEED, 0);  -- value will be 1 for the next record insert
17
user2309101