SQL Server和Identity列中的空白

and*_*007 4 sql sql-server identity

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

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

谢谢

mar*_*c_s 8

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

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

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

  • @ andrew007:我强烈怀疑SQL Server会填补空白......也许一些生物机械设备(例如人类)正在这样做 - 但肯定不是SQL Server ...... (4认同)