创建序列
图形化界面创建
DDL
CREATE SEQUENCE "TEST"."S1"
INCREMENT BY 1
START WITH 1
MAXVALUE 100
MINVALUE 1;
参数:
INCREMENT BY < 增量值 >|
START WITH < 初值 >|
MAXVALUE < 最大值 >|
MINVALUE < 最小值 >|
CYCLE 该关键字指定序列为循环序列:当序列的值达到最大值 / 最小值时,序列将从最小值 / 最大值计数;
NOCYCLE 该关键字指定序列为非循环序列:当序列的值达到最大值 / 最小值时,序列将不再产生新值;
CACHE 该关键字表示序列的值是预先分配,并保持在内存中,以便更快地访问;
< 缓存值 > 指定预先分配的值的个数,最小值为 2 ;最大值为 50000 ;且缓存值不能大于 (< 最大值 > - < 最小值 >)/< 增量值 > ;
NOCACHE 该关键字表示序列的值是不预先分配;
ORDER 该关键字表示以保证请求顺序生成序列号;
NOORDER 该关键字表示不保证请求顺序生成序列号;
GLOBAL 该关键字表示 MPP 环境下序列为全局序列,缺省为 GLOBAL ;
LOCAL 改关键字表示 MPP 环境下序列为本地序列
使用说明
- 一旦序列生成,就可以在 SQL 语句中用以下伪列来存取序列的值;
1 ) CURRVAL 返回当前的序列值;
2 ) NEXTVAL 如果为升序序列,序列值增加并返回增加后的值;如果为降序序列,
序列值减少并返回减少后的值。如果第一次对序列使用该函数,则返回序列当
前值;
3 ) 用户会话在第一次使用 CURRVAL 之前应先使用 NEXTVAL 获取序列当前值;
之后除非会话使用 NEXTVAL 获取序列当前值,否则每次使用 CURRVAL 返回
的值不变。 - 缺省序列:如果在序列中什么也没有指出则缺省生成序列,一个从 1 开始增量为 1
且无限上升 ( 最大值为 9223372036854775807) 的升序序列;仅指出
INCREMENT BY -1 ,将创建一个从 -1 开始且无限下降 ( 最小值为
-9223372036854775808) 的降序序列。
修改序列
图形化界面
DDL:
ALTER SEQUENCE "TEST"."S1" INCREMENT BY 2;
使用说明
- 关于步长的修改,分两种情况:
a) 如果在修改前没有用 NEXTVAL 访问序列,创建完序列后直接修改序列步长值,
则序列的当前值为起始值加上新步长值与旧步长值的差;
b) 如果在修改前用 NEXTVAL 访问了序列,然后修改序列步长值,则再次访问序
列的当前值为序列的上一次的值加上新步长值。 - 缺省序列选项:如果在修改序列语句中没有指出某选项则缺省是修改前的选项值。
不允许未指定任何选项、禁止重复或冲突的选项说明; - 序列的起始值不能修改;
- 修改序列的最小值不能大于起始值、最大值不能小于起始值;
- 修改序列的步长的绝对值必须小于 MAXVALUE 与 MINVALUE 的差;
- 序列的当前值不能大于最大值,不能小于最小值。
删除序列
DROP SEQUENCE "TEST"."S1";