【问题标题】:Int Primary key - exceeding int rangeInt 主键 - 超出 int 范围
【发布时间】:2010-12-07 18:29:35
【问题描述】:

只是想知道超过 2147483647 条记录后实际会发生什么?

【问题讨论】:

  • 将很容易测试 - 创建一个 IDENTITY 列,种子为 2147483646,然后添加两条记录! :-)
  • 翻过来看负数系列。

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


【解决方案1】:

试试看

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 

消息 8115,第 16 级,状态 1,第 1 行
将 IDENTITY 转换为数据类型 int 时出现算术溢出错误。

另请参阅What To Do When Your Identity Column Maxes Out 以获得快速修复

【讨论】:

    【解决方案2】:

    大多数人忘记了 int 有一个比正面大一个的负面。如果您认为您可能会超过正整数值,只需从 -2,147,483,648 范围的负端开始您的身份。或者要真正使用新的 DBA,从 2,147,483,647 开始,然后逐步增加 -1。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-08
        • 2017-06-29
        • 2018-11-12
        • 2011-10-28
        • 1970-01-01
        相关资源
        最近更新 更多