sql >> Database teknologi >  >> RDS >> Sqlserver

Dublerede værdier i identitetskolonnen

Jeg testede, hvad Giogri siger, og hvis du aktiverer identitetsspecifikationen (i det mindste i 2008, sandsynligvis også andre versioner), efter at tabellen har rækker, starter DB nummereringen ved den højeste heltalsværdi. Hvis du har én række med 100 som kolonneværdi, så aktiver Identitet, den næste indsættelse vil være 101. Selv med Identity Seed angivet som 1. Var ikke, hvad jeg ville have forventet, men det er det, der skete.

Ud over SET IDENTITY INSERT , er der også en reseed-kommando. DBCC CHECKIDENT kommando, som vil nulstille dine identitetsværdier tilbage til det, du angiver.

Da aktivering af identitetsspecifikationen faktisk starter ved det højeste heltal i kolonnen, har nogen sandsynligvis enten brugt SET IDENTITY_INSERT eller lavede en DBCC CHECKIDENT .

Den hurtigste måde at gensekvensere, som Andomar siger, er at slippe/genskabe kolonnen sådan her

ALTER TABLE tbl
DROP COLUMN ident_column
GO
alter TABLE tbl
ADD ident_column int IDENTITY

SET IDENTITY_INSERT docs:http://msdn.microsoft.com/ en-us/library/aa259221(SQL.80).aspx
DBCC CHECKIDENT docs:http://msdn.microsoft.com/ en-us/library/aa258817(SQL.80).aspx



  1. Hvilken db-manager til et 100Go-bord?

  2. Design af DB-tabel med mange rækker og mange kolonner med binær information

  3. Gap-less sekvens, hvor flere transaktioner med flere tabeller er involveret

  4. cx_Oracle og undtagelseshåndtering - god praksis?