假设我有一个表,第一列是一个标识。我认为价值增加了一个自动化。 我说这个专栏是
1
2
3
4
...
47
48
49
50
如果我删除最后一行(id = 50)并插入一个新行,为什么身份是51而不是50?
感谢。
答案 0 :(得分:1)
无论行是否存在,该值都将用完。除了删除之外,还会在回滚插入时看到间隙。如果你想要一个连续的整数序列,那么身份就不是答案。
答案 1 :(得分:0)
标识种子不受删除的影响,因此下一个值将继续递增,就像从未删除该行一样。
使用DBCC CHECKIDENT
(http://msdn.microsoft.com/en-us/library/ms176057.aspx)实用程序也可以重新定位身份。
答案 2 :(得分:0)
种子与记录分开跟踪;如果删除记录,则仍使用该值。你可以使用
DBCC CHECKIDENT (YourTable, NORESEED)
验证下一个标识值是什么。
答案 3 :(得分:0)
尝试调整差距是一个非常糟糕的主意。如果您没有正确执行此操作,则极有可能最终导致数据完整性问题。没有理由关心99.99%的所有申请中存在差距(有少数申请的法律要求不允许存在差距 - 那些不使用身份的申请)。