在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