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

  • 相关阅读:
    pycharm出现乱码
    Name-based virtual servers 给予名称的虚拟服务
    预建报为稳定版本
    nginx指令
    Module ngx_http_index_module nginx的首页模块
    我还在坚持中~
    手机端页面自适应解决方案—rem布局进阶版
    前端页面的适配使用rem换算
    js零碎知识汇总
    让input不可编辑
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/4744125.html
Copyright © 2011-2022 走看看