请问int  identity(1,1)这样的字段,有没有可能达到int的最大值啊?-2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)如果达到最大值,再自增长会出现什么情况?

解决方案 »

  1.   

    沒試過,如果數據多的話,定義為bigint 總夠用吧
      

  2.   

    identity 有极限的...但是不知道达到极限会发生什么. - -
      

  3.   

    没遇到过
    如果数据量很大的话,用bigint吧
      

  4.   

    create table test1(id int identity(2147483647,1),s varchar(10))insert into test1(s) values('a')  -正常insert into test1(s) values('b') --错误如下服务器: 消息 8115,级别 16,状态 1,行 1
    将 IDENTITY 转换为数据类型 int 时发生算术溢出错误。
    发生算术溢出。
      

  5.   

    同意动物大哥... bigint 应该够用...
    但是达到极限会发生什么呢? 是插不进数据?
    还是会发生什么事? 等高人
      

  6.   

    9494。。那我一个系统,设置identity之后,如果一直用下去,会不会爆掉?这个我觉得,因为自增长嘛,不管什么类型,只要有个极限,那随着系统的使用,应该会出现达到极限的情况吧?不知道各位达人,如何解决这种情况的?
      

  7.   

    create table Test (test decimal(38,0) identity(1,1), c2 int.....)/*
    最大38个9:99999999999999999999999999999999999999
    够楼主用了吧?!!!
    */
      

  8.   

    你這總擔心是多佘的,如果你的數據真的到了自增都不夠用時,你不會做數據移轉嗎?不然的話
    你的系統不是慢死了-----------------数据转移是的。。只是让系统得到缓解而且,一般这种,用这种字段用来关联表,应该是很正常的。。但是,即使你把历史数据转移掉,你这个字段的增长还是继续的。。如果你把identity从头开始的话,那可能引起数据冲突,不知道我的想法对不对。请大家各抒己见阿。。当然,目前我也这么用的,,只是突然一个做2次开发的时候,一个4年前的系统,继续开发,才发现其中identity的数据已经比较大了。。呵呵。。
      

  9.   

    create table Test (test decimal(38,0) identity(1,1), c2 int.....)/*
    最大38个9:99999999999999999999999999999999999999
    够楼主用了吧?!!!
    */
    ----哈哈。。我现在是不多想,只是个疑问罢了。。想想设计系统的人,不知道这种问题属不属于考虑范围。。也不清楚以前的人设计系统有没有考虑这个。。所以拿出来大家讨论一下。。呵呵
      

  10.   

    这个问题肯定考虑,看你的数据量。
    如果是静态表,只要够用,用tinyint又何妨。
    如果是流水记录,用bigint,我敢说跑1千年都不会爆,用int基本上也可以了。