首页 > 数据库 > > GaussDB 100 创建序列
向当前数据库中增加一个新的序列生成器。
当前用户为该生成器的所有者。
序列是基于bigint运算的,因此其范围不能超过八字节的整数范围(-263~263-1)。若指定的值超出BIGINT的范围,系统将使用bigint的上边界或下边界替换。
序列对象不适合用于多会话并发的场合,因为会引起序列不能按顺序生成的问题。
执行该语句的用户需要有CREATE SEQUENCE、CREATE ANY SEQUENCE或者ALL PRIVILEGES的系统权限语法格式。
在创建序列后,可以使用NEXTVAL,CURRVAL函数获取序列的值,普通用户不可以创建系统用户对象。
CREATE SEQUENCE [ schema_name. ]sequence_name
[ INCREMENT BY bigint
| START WITH bigint
| { MAXVALUE bigint | NOMAXVALUE }
| { MINVALUE bigint | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE bigint | NOCACHE }
| { ORDER | NOORDER }
] [ ... ][ schema_name. ]
用户名。不指定时默认是当前登录用户。
sequence_name
将要创建的序列名。可以用模式修饰。
INCREMENT BY bigint
用于指定序列的步长。
非零整数。缺省值是1。
increment为正数时,将生成一个递增的序列。
increment为负数时,将生成一个递减的序列。
START WITH bigint
用于指定序列的起点。
start:序列的起点。
递增序列的缺省起点为minvalue。
递减序列的缺省起点为maxvalue。
MAXVALUE bigint | NOMAXVALUE
MAXVALUE声明序列的最大值。
NOMAXVALUE声明序列无最大值。
如果没有声明该子句或者声明了NOMAXVALUE,则使用默认值:
递增序列的缺省最大值为 263-1。
递减序列的缺省最大值为-1。
MINVALUE bigint | NOMINVALUE
MINVALUE声明序列的最小值。
NOMINVALUE声明序列无最小值。
如果没有声明该子句或者声明为NOMINVALUE,则使用默认值:
递增序列的缺省最小值为1。
递减序列的缺省最小值为-263+1。
CYCLE | NOCYCLE
CYCLE,用于声明序列达到最大或最小值时可循环,即:
NOCYCLE,用于声明当序列达到极限值时,取下一个值会出错。
默认为NOCYCLE。
递增序列到达maxvalue时,生成的下一个数据是minvalue。
递减序列到达minvalue时,生成的下一个数据是maxvalue。
CACHE bigint | NOCACHE
CACHE bigint表示为快速访问而在内存里预先存储序列号的个数,默认值是20,最小值是1。此处在存在约束:如果向上取整((MAXVALUE - MINVALUE )/ INCREMENT ) < CACHE bigint,则会报错:
ERR_SEQ_INVALID:number to CACHE must be less than one cycle
NOCACHE表示不设置缓存。
ORDER | NOORDER
ORDER:保证序列号按请求顺序产生。如果想以序列号作为timestamp(时间戳)类型的话,可以采用该选项。对于将序列用于生成主键来说,约定顺序通常并不重要。
NOORDER:NOORDER跟ORDER相对应,并不按照请求的顺序进行生成。默认是NOORDER。
创建序列seq_auto_extend。
--删除序列seq_auto_extend。 DROP SEQUENCE IF EXISTS seq_auto_extend;
--创建序列seq_auto_extend,序列起点为10,步长为2,最大值为200,序列到达最大值时可循环。 CREATE SEQUENCE seq_auto_extend START WITH 10 MAXVALUE 200 INCREMENT BY 2 CYCLE;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3170574/ ,如需转载,请注明出处,否则将追究法律责任。