sql >> Database >  >> RDS >> Sqlserver

Dubbele waarden in identiteitskolom

Ik heb getest wat Giogri zegt en als je de identiteitsspecificatie inschakelt (tenminste in 2008, waarschijnlijk ook andere versies) nadat de tabel rijen heeft, zal de database de nummering starten op de hoogste integerwaarde. Als je één rij hebt met 100 als kolomwaarde, schakel dan Identiteit in, de volgende invoeging is 101. Zelfs met Identity Seed gespecificeerd als 1. Was niet wat ik had verwacht, maar het is wat er is gebeurd.

Naast SET IDENTITY INSERT , er is ook een reseed-opdracht. DBCC CHECKIDENT commando dat uw identiteitswaarden terugzet naar wat u opgeeft.

Aangezien het inschakelen van de identiteitsspecificatie eigenlijk begint bij het hoogste gehele getal in de kolom, heeft iemand waarschijnlijk ofwel SET IDENTITY_INSERT gebruikt of deed een DBCC CHECKIDENT .

De snelste manier om de volgorde te wijzigen, zoals Andomar zegt, is door de kolom op deze manier te laten vallen / opnieuw te maken

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

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



  1. Splits door komma's gescheiden waarden naar kolommen in Oracle

  2. SCOPE voor een tabel met REF's

  3. SQL-injectie vermijden in een door de gebruiker gegenereerde SQL-regex

  4. MS SQL Server-referenties opslaan in een MySQL-database