数据库主键int类型,自动增长列,标识列,每次自动增长,增长到int类型的长度放不下了怎么办?

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

2 个解决方案

#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()来生成主键。

#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()来生成主键。