zoukankan      html  css  js  c++  java
  • 将 IDENTITY 转换为数据类型 int 时出现算术溢出错误。

    IDENTITY标识列为int类型,取值范围为-2^32到2^31-1。当增长值超过这个最大值时,我在SQL Server 2008 R2 x64上试验的结果是:

    将 IDENTITY 转换为数据类型 int 时出现算术溢出错误。
    • 一般解决方案:
    1,)如果该column为主键,则删除主键:
    alter table [tablename] drop [pkname];
    2,)修改该column的数据类型为bigint:
    alter table [tablename] alter column [column name] bigint;
    这种方案的操作步骤:
    1. )将[tablename] 表中的记录插入到临时表,
    2. )之后清掉[tablename] 中的记录,
    3. )修改[column name] 的数据类型,
    4. ) 从临时表中的记录插回表[tablename],释放临时表。
    这种方案会产生大量日志。
     
    • 手动处理方案:
    1. )自己新建一种表[tablename_new] ,设定[column name] bigint
    2. )将[tablename]中的记录插入到表[tablename_new];
    3. )删除表[tablename],修改表[tablename_new]名称为[tablename]。
     
     
    备注:

    int、bigint、smallint 和 tinyint

    使用整数数据的精确数字数据类型。

    bigint

    从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。

    int

    从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer

    smallint

    从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。

    tinyint

    从 0 到 255 的整型数据。存储大小为 1 字节。

    注释

    在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。在 SQL Server 中,int 数据类型是主要的整数数据类型。

    在数据类型优先次序表中,bigint 位于 smallmoneyint 之间。

    只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动将其它整数数据类型(tinyintsmallintint)提升为 bigint

  • 相关阅读:
    HDU 1874 畅通工程续(dijkstra)
    HDU 2112 HDU Today (map函数,dijkstra最短路径)
    HDU 2680 Choose the best route(dijkstra)
    HDU 2066 一个人的旅行(最短路径,dijkstra)
    关于测评机,编译器,我有些话想说
    测评机的优化问题 时间控制
    CF Round410 D. Mike and distribution
    数字三角形2 (取模)
    CF Round410 C. Mike and gcd problem
    CF Round 423 D. High Load 星图(最优最简构建)
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/4744125.html
Copyright © 2011-2022 走看看