标识列似乎跳过值

时间:2014-07-14 10:26:14

标签: sql-server identity-column

我在sqlserver 2012中创建了一个表,其中主键ID已打开,我发现它插入的值从1到55,然后跳转到1056.

要清楚,它返回的ID如下:

1 2 3 4 五 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 三十 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 1056

导致这种情况发生的原因是什么?

1 个答案:

答案 0 :(得分:0)

通常,这表示您意外创建了一堆行然后将其删除。我之前通过经过深思熟虑的循环发生了这种情况,甚至只是糟糕的应用程序逻辑。无论如何,这是由删除表中的记录引起的。它也可以通过手动更改身份种子引起,但除非您有意尝试这样做,否则它不太可能发生。特别是如果你与一个可以访问数据库的团队一起工作,可以想象其他人犯了一些浪费了一些价值的小错误。我相信没什么值得担心的。

快速的内联编辑:我发现您找到了a "bug"的引用。我没有意识到这一点,但它确实解释了它。不过,我的观点仍然有效。在大多数情况下,这真的没什么值得担心的。

所有人说,你可以重置标识列,搜索肯定会告诉你如何做到这一点。您也可以删除列并重新添加它。但是我通常会在发生这种事情时忽略它。如果你打算打2 ^ 31个记录,千分之一将不会有任何真正的区别,任何编写良好的程序都不需要任何特定格式或任何特定限制的ID。