2010-03-29 48 views
4

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

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

THANKS

+1

使用[sql-server]标签而不是单独的[ms]和[sql]标签可以获得更多的成功 – 2010-03-29 10:32:50

回答

8

这是定义和记录SQL Server的行为,而且也确实没有什么可以做一下改变它。你想改变什么呢?

IDENTITY列将保证唯一的,不断增加的ID(只要你不要乱用它们) - 它们不保证其他任何东西。

SQL Server将而不是经历在您的序列中发现“缺口”并填补它们的麻烦。无论如何,我认为这不是一个好主意 - 如果您确实有ID = 3的记录,然后将其删除,该怎么办?你真的想要下一个记录突然“回收”该ID?在我看来,这不是一个好主意。

+1

这就是要点......我看到有时候SQL服务器经历了空白并填充它们...我并没有看到原因.. – andrew0007 2010-03-29 11:43:54

+4

@ andrew007:我强烈怀疑SQL Server会填补空白.....也许一些生物机械装置(例如人类)正在这样做 - 但肯定不是SQL Server ...... – 2010-03-29 12:20:05

+0

你是对的..这是一个有关我的存储过程的问题:) – andrew0007 2010-03-29 13:06:23