如果你添加一条新记录,然后删除该记录,然后一遍又一遍地再次添加它,及时,当你添加一条新记录时,整数主键id最终会超过20亿。 / p>
现在会发生什么? SQL Server将再次从1启动主键ID?或-1?
如果它循环40亿次会发生什么; SQL Server如何知道不替换以前的数据?
答案 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万亿次极限之前