sql >> Databasteknik >  >> RDS >> Sqlserver

Duplicera värden i identitetskolumnen

Jag testade vad Giogri säger och om du aktiverar identitetsspecifikationen (åtminstone 2008, förmodligen även andra versioner) efter att tabellen har rader, kommer DB att börja numreringen vid det högsta heltalsvärdet. Om du har en rad med 100 som kolumnvärde, aktivera Identitet, nästa infogning blir 101. Även med Identity Seed specificerat som 1. Var inte vad jag hade förväntat mig, men det är vad som hände.

Förutom SET IDENTITY INSERT , det finns också ett reseed-kommando. DBCC CHECKIDENT kommando som återställer dina identitetsvärden till det du anger.

Med tanke på att aktivering av identitetsspecifikationen faktiskt börjar med det högsta heltal i kolumnen, har någon förmodligen antingen använt SET IDENTITY_INSERT eller gjorde en DBCC CHECKIDENT .

Det snabbaste sättet att sekvensera som Andomar säger är att släppa/återskapa kolumnen så här

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. Hur implementerar man taggningssystem som liknar SO i php/mysql?

  2. Hur man tar bort en databas i MySQL/MariaDB

  3. Sequelize.js tar fortfarande bort tabellrad även om paranoid är satt till sant

  4. Varför skulle MySQL köra return None?