主键ID超过限制时会发生什么?

时间:2011-03-14 22:13:05

标签: sql-server sql-server-2005 sql-server-2008

如果你添加一条新记录,然后删除该记录,然后一遍又一遍地再次添加它,及时,当你添加一条新记录时,整数主键id最终会超过20亿。 / p>

  1. 现在会发生什么? SQL Server将再次从1启动主键ID?或-1?

  2. 如果它循环40亿次会发生什么; SQL Server如何知道不替换以前的数据?

3 个答案:

答案 0 :(得分:21)

如果identity超出数据类型的界限而导致问题的其余部分无效,则会出现错误。你可以通过

看到这个
CREATE TABLE #T
(
id INT IDENTITY(2147483647,1)
)

INSERT INTO #T
DEFAULT VALUES

INSERT INTO #T
DEFAULT VALUES /*Arithmetic overflow error converting IDENTITY to data type int.*/

GO

SELECT * FROM #T

DROP TABLE #T

答案 1 :(得分:8)

使用BIGINT,你可能永远不会达到极限。

答案 2 :(得分:2)

这是我在similar question上找到的评论,我将其留在这里供将来可能担心BIGINT溢出的用户使用。

如果您使用从1开始的BIGINT IDENTITY,则插入一个 每秒数千行,您需要令人难以置信的2.92亿年 在达到922万亿次极限之前