DBCC CHECKIDENTでIDENTITYを再設定した場合、
テーブルをTRUNCATEした直後とそれ以外では値が異なってしまう。
TRUNCATEした直後だとRessedで指定した値が採番されるが、
DELETE等でクリアした場合はRessedで指定した値+1が採番される。
以下、再現するためのSQL
ダミーでテーブルを作成
CREATE TABLE hogetbl( [colid] [int] IDENTITY(3,1) NOT NULL, [col2] [nchar](10) ) ON [PRIMARY]
TruncateしたのちにDBCC CHECKIDENT
TRUNCATE TABLE HOGETBL DBCC CHECKIDENT ('HOGETBL', RESEED, 100) INSERT INTO HOGETBL(COL2) VALUES('HOGE') SELECT * FROM HOGETBL
SELECTの結果(TRUNCATE)
colid col2 -------------- 100 hoge
DELETEしたのちにDBCC CHECKIDENT
--DELETE前にレコードを追加しておく INSERT INTO HOGETBL(COL2) VALUES('HOGE') DELETE FROM HOGETBL DBCC CHECKIDENT ('HOGETBL', RESEED, 100) INSERT INTO HOGETBL(COL2) VALUES('HOGE') SELECT * FROM HOGETBL
SELECTの結果(DELETE)
colid col2 -------------- 101 hoge
動作確認環境:SQL Server2008 Enterprise Edition