2012-12-13 18 views
27

Ich habe einen Primärschlüssel erstellt, der automatisch inkrementiert wird.Autoinkrement in Microsoft SQL Server 2008 R2 zurücksetzen

  • Ich habe zwei Reihen: ID=1, ID=2
  • ich diese beiden Zeilen gelöscht.
  • Ich habe eine neue Reihe, aber die ID der neuen Zeile war: ID=3

Wie kann ich die autoincrement auf 1 zurückgesetzt oder neu gestartet werden?

Antwort

49

Wenn Sie den Befehl DBCC CHECKIDENT:

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

Aber Verwendung mit VORSICHT! - dies wird nur die IDENTITY auf 1 zurücksetzen - so erhalten Ihre nächsten Inserts Werte 1, dann 2 und dann 3 -> und Sie haben einen Konflikt mit Ihrem bereits vorhandenen Wert von 3 hier!

IDENTITY nur Gerichte aus Zahlen in fortlaufender Reihenfolge - es tut NICHT in irgendeiner Weise sicherstellen, dass es keine Konflikte gibt! Wenn Sie bereits Werte haben - tun Sie nicht wieder auf einen niedrigeren Wert zurückgesetzt!

+0

Ich vergaß zu sagen, ich bin mit Management Studio, so möchte ich reseed es mit dem Management Studio – victorio

+3

@victorio: Öffnen Sie einfach ein neues Abfragefenster und führen Sie diesen T-SQL-Befehl aus! –

+0

niiiice, vielen Dank! – victorio

15

Ich verwende SQL Server 2012 und die DBCC CHECKIDENT ("YourTableNameHere", RESEED, 1) verursacht einen Wert von 2 am nächsten Einsatz.

So für SQL Server 2012 ändert sich die 1-0 einen Wert von 1 für Ihren nächsten Datensatz einfügen zu bekommen:

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

Dies funktioniert in ** SQL Server 2008 R2 ** –