Language:

Identity Spalten zurücksetzen

Language: Deutsch
Programming Language: SQL
Published by: Thomas
Last Update: 4/13/2006
Views: 1610

Description

Wenn man "normale" Identities und keine Guids als IDs benutzt, erhält man, wenn die Anwendung fertig für die Auslieferung ist, schnell recht hohe IDs - da die ja fortlaufend, meist bei 1 beginnend, bereits während der Erstellung durch das Anlegen von X Testdatensätzen nach oben getrieben wurden. In Access ist die Sache einfach - einfach Datenbank komprimieren und reparieren, und schon sind Autowerte dort wieder bei 0.

Am SQL Server muss man eine System-Sproc benutzen, siehe Code. Das funktioniert am SQL Server 2000 wie am SQL Server 2005, und sollte das folglich auch mit Express tun.

Code

1 delete from Tabelle 2 DBCC CHECKIDENT('Tabelle', RESEED, 0) 3 select @@identity From Tabelle

2 comments

1

das müsste doch auch mit truncate gehen, oder?


delete from test1
truncate table test1

dann beginnen die ids wieder von vorne

Wednesday, September 27, 2006 1:47:37 PM from Andi
2

Der Code ist nicht die Beste Lösung.

@@identity funktioniert nicht in der Darstellung. Es Zeigt die zuletzt erstellte IDENTITY Global an!!! Dadurch können gravierende Fehler auftreten!

Hierfür ist nur eine Lösung richtig!
Zeigt aktuelle IDENTITY einer Tabelle an: select IDENT_CURRENT('Table')
Ändert den IDENTITY Wert der Tabelle: DBCC CHECKIDENT('Table', RESEED, 300000)
Zeigt den neuen IDENTITY Wert an: select IDENT_CURRENT('Table')

Monday, January 01, 0001 12:00:00 AM from Steffen Grabaum

Add a comment

Name *  

Email (won't be displayed) *    

Website  

Comment *  

Sicherheitscode Security Code *    

RSS