【发布时间】:2017-08-10 15:53:27
【问题描述】:
在 SQL Server 2012 中,以下查询将标识列 myTable_id 从 2 而不是 1 作为种子。为什么? myTable_id也是PK。
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 开始。 - 以下是 SSMS 中
myTable_id列的快照:
【问题讨论】:
-
DBCC CHECKIDENT(myTable, RESEED,0)
-
我可以想象,因为重新设置为 1 意味着它认为它已经有一个值 1,所以下一个应该是 2。即在这种情况下它是基于零的,而不是基于 1 的可能更多给定身份的默认行为,直观
标签: sql-server tsql sql-server-2012 dbcc