在SQL Server 2012中,以下查詢將播種來自2而不是1的標識列myTable_id
。爲什麼? myTable_id
也是PK。DBCC CHECKIDENT(myTable,RESEED,1)從2重新播種
DELETE FROM myTable;
GO
SELECT * FROM myTable --0 rows are returned as expected
GO
DBCC CHECKIDENT(myTable, RESEED,1)
GO
INSERT INTO myTable(col1,col2,col3) SELECT FROM AnotherTable(col1,col2,col3)
GO
SELECT * FROM myTable --1005 rows are returned as expected, but identity value starts from 2
GO
備註:
- 插入的數據是正確的,唯一的問題是新插入的數據從2代替1
- 開始在上面的SQL代碼,如果我使用
DBCC CHECKIDENT(myTable, RESEED,0)
身份列正確地從1開始。 - 以下是針對
myTable_id
列的SSMS中的快照:
DBCC CHECKIDENT(myTable,RESEED,0) – mohan111
我會想象因爲重新播放到1意味着它認爲它已經具有1的值,所以下一個應該是2.也就是說,在這種情況下它是零,而不是基於1這可能是更直觀的給定身份的默認行爲 – Xedni