本文介绍创建不同类型Sequence的方法。

New Sequence

语法
CREATE [NEW] SEQUENCE <name>
[ START WITH <numeric value> ]
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]
参数说明
参数说明
START WITHNew Sequence的起始值,若未指定,则默认起始值为1。
INCREMENT BYNew Sequence每次增⻓时的增量值(或称为间隔值、步长),若未指定,则默认值为1。
MAXVALUENew Sequence允许的最大值,必须为正整数。若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。
CYCLE或NOCYCLE两个参数只能选择其中一个,说明如下:
  • CYCLE:当New Sequence的值增长到最大值后,允许从起始值开始重新循环。
  • NOCYCLE:当New Sequence的值增长到最大值后,不允许从起始值开始重新循环,再分配会报错,如果参数未指定,默认为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 WITHGroup Sequence的起始值,默认起始值依赖于单元数量和单元索引,如果没有指定单元数量和单元索引,则默认起始值为100001。
UNIT COUNTGroup Sequence的单元数量,默认值为1。
INDEXGroup 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;