标识列上生成无序序列号

时间:2013-11-11 17:22:09

标签: sql sql-server sql-server-2008

我的一个SQL Server中有一个奇怪的问题。我在Identity seq列中插入了id,其中某个时间点increased2数字而不是1。我的身份增量设置不是两个。 Identity列可能存在什么问题?

2 个答案:

答案 0 :(得分:6)

IDENTITY值不保证是连续的。由于回滚,删除等原因,您可能会丢失数字。

CREATE TABLE #d(ID INT IDENTITY(1,1));

INSERT #d DEFAULT VALUES;

BEGIN TRANSACTION;
INSERT #d DEFAULT VALUES;
ROLLBACK TRANSACTION;

INSERT #d DEFAULT VALUES;

SELECT ID FROM #d;

DROP TABLE #d;

结果:

ID
----
1
3

如果您需要您的值是连续的,请停止使用IDENTITY列。

答案 1 :(得分:2)

这是因为您有一些未提交的插入,因此将计算这些插入的标识。