Int主键 - 超出int范围

时间:2010-12-07 18:29:35

标签: sql-server sql-server-2008 database-design

只是想知道在超过2147483647条记录后究竟发生了什么?

3 个答案:

答案 0 :(得分:12)

尝试一下

CREATE TABLE #tester (
    testerid INT IDENTITY(1, 1) not null CONSTRAINT pk_tester 
    PRIMARY KEY CLUSTERED)

DBCC checkident(#tester, reseed, 2147483647)

INSERT #tester DEFAULT VALUES 
INSERT #tester DEFAULT VALUES 

Msg 8115,Level 16,State 1,Line 1
将IDENTITY转换为数据类型int的算术溢出错误。

另请参阅What To Do When Your Identity Column Maxes Out以获得快速解决方法

答案 1 :(得分:1)

大多数人都忘记了int的负面影响,比正面更大。如果你认为你可能超过积极的int值,那么只需在-2,147,483,648范围的负端开始你的身份。或者真正玩新的DBA从2,147,483,647开始,逐步-1。

答案 2 :(得分:1)

如果您认为可能那么使用范围更大的数据类型。例如,NUMERIC或BIGINT。