SQL Server和Identity列中的空白

时间:2010-03-29 10:30:17

标签: sql sql-server identity

我刚注意到,如果我在表中有一个标识列,当我插入新行时,如果存在不连续性,SQL Server 2008会自动填充序列。我的意思是,如果在我的标识栏中我有1,2,5,6,如果我在表格中插入其他两行,系统会自动将 3 ,7添加到标识列中。

你知道如何控制这种行为吗?

感谢

1 个答案:

答案 0 :(得分:8)

这是已定义和记录的SQL Server行为,并且您无法更改它。你想改变什么呢?

IDENTITY列将保证唯一且不断增加的ID(只要您不会乱用它们) - 它们不保证任何其他内容。

SQL Server将在查找序列中的“间隙”并填写它们时遇到麻烦。无论如何,我认为这不是一个好主意 - 如果你确实有ID = 3的记录,然后将其删除?你真的想要下一条记录突然“回收”那个ID吗?在我看来,这不是一个好主意。