突然想到的问题,如果数据量大,是不是不能用int类型做自动增长了呢?或者有什么更好的设计方法,自动增长时间久了,数据肯定把int类型撑死了。

解决方案 »

  1.   

    自增长的 的列,在oracle使用sequence ,你可以在创建 sequence时 指明 增长最大值的限制的。
    例如:
    -- Create sequence 
    create sequence KH_ID
    minvalue 1
    maxvalue 999999999999999
    start with 7275126
    increment by 1
    nocache;
      

  2.   

    oracle里面int即number(38),最大值是1.E+126,即10的126次方。
    sequence的最大值可以到10的28次方,所以,是不会把int类型撑死的。
    如果创建sequence时指定了CYCLE参数,到达最大值后会从最小值开始重新增长。
    如果10的28次方还不够你用,可以用SYS_GUID()来生成主键。