本文介绍创建不同类型Sequence的方法。
New Sequence
语法
CREATE [NEW] SEQUENCE <name>
[ START WITH <numeric value> ]
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]
参数说明
参数 | 说明 |
START WITH | New Sequence的起始值,若未指定,则默认起始值为1。 |
INCREMENT BY | New Sequence每次增⻓时的增量值(或称为间隔值、步长),若未指定,则默认值为1。 |
MAXVALUE | New Sequence允许的最大值,必须为正整数。若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。 |
CYCLE或NOCYCLE | 两个参数只能选择其中一个,说明如下:
|
如果未指定类型关键字,在AUTO模式数据库中默认创建New Sequence,DRDS模式数据库不支持创建New Sequence。
示例
创建一个New Sequence,起始值是1000:
CREATE NEW SEQUENCE newseq START WITH 1000;
创建一个New Sequence,起始值为1,步长为2,最大值为100,允许循环分配:
CREATE NEW SEQUENCE newseq2 START WITH 1 INCREMENT BY 2 MAXVALUE 100 CYCLE;
Group Sequence
语法
CREATE [GROUP] SEQUENCE <name>
[ START WITH <numeric value> ]
[ UNIT COUNT <numeric value> INDEX <numeric value> ]
如果未指定类型关键字,在DRDS模式数据库中默认创建Group Sequence。在AUTO模式数据库中创建时需要显式指定GROUP类型。
参数说明
参数 | 说明 |
START WITH | Group Sequence的起始值,默认起始值依赖于单元数量和单元索引,如果没有指定单元数量和单元索引,则默认起始值为100001。 |
UNIT COUNT | Group Sequence的单元数量,默认值为1。 |
INDEX | Group Sequence的单元索引,取值范围为[0, 单元数量-1],默认值为0。 |
Group Sequence是非连续的。START WITH参数仅具有指导意义, Group Sequence不会严格将该参数作为起始值,但是保证起始值比该参数值更大。
大于一个单元的Group Sequence,不支持转换到其它类型的Sequence。
创建Group Sequence后,不支持修改单元数量和索引。
示例
创建一个普通的Group Sequence,默认一个单元:
CREATE GROUP SEQUENCE groupseq;
创建包含三个单元的跨实例或库的全局Group Sequence(将三个指定了相同单元数量和不同单元索引的同名Group Sequence,分别用于三个不同的实例或库,组成一个全局Group Sequence)。
实例1或库1:
CREATE GROUP SEQUENCE ugroupseq UNIT COUNT 3 INDEX 0;
实例2或库2:
CREATE GROUP SEQUENCE ugroupseq UNIT COUNT 3 INDEX 1;
实例3或库3:
CREATE GROUP SEQUENCE ugroupseq UNIT COUNT 3 INDEX 2;
Time-based Sequence
语法
CREATE TIME SEQUENCE <name>
存储Time-based Sequence值的列必须为BIGINT类型。
示例
创建一个Time-based Sequence:
CREATE TIME SEQUENCE seq3;