Group Sequence
语法
CREATE [ GROUP ] SEQUENCE <name> [ START WITH <numeric value> ]
参数说明
参数 | 说明 |
START WITH | Group Sequence 的起始值,若未指定,则默认起始值为100001。 |
示例
创建一个Group Sequence:
- 方法一请在命令行输入如下代码:
mysql> CREATE SEQUENCE seq1;
- 方法二请在命令行输入如下代码:
mysql> CREATE GROUP SEQUENCE seq1;
单元化 Group Sequence
语法
CREATE [ GROUP ] SEQUENCE <name> [ START WITH <numeric value> ] [ UNIT COUNT <numeric value> INDEX <numeric value> ]
参数说明
参数 | 说明 |
START WITH | 单元化Group Sequence的起始值,默认起始值依赖于单元数量和单元索引;若单元数量和单元索引未被指定或为默认值,则默认起始值为100001。 |
UNIT COUNT | 单元化Group Sequence的单元数量,默认值为1。 |
INDEX | 单元化Group Sequence的单元索引,取值范围为 [ 0, 单元数量 - 1 ],默认值为0。 |
说明
- 如果未指定类型关键字,则默认类型为 Group Sequence。
- Group Sequence 和单元化Group Sequence是非连续的。START WITH参数对于它们仅具有指导意义,Group Sequence 和单元化Group Sequence不会严格按照该参数作为起始值,但是保证起始值比该参数大。
- 可以将Group Sequence看作单元化Group Sequence的一个特例,即UNIT COUNT = 1 且 INDEX = 0 时的单元化Group Sequence。
示例
创建包含3个单元的全局唯一数字序列(将3个同名的、指定了相同单元数量和不同单元索引的单元化Group Sequence,分别用于3个不同的实例或库,组成一个全局唯一数字序列)。
- 实例1/库1:
mysql> CREATE GROUP SEQUENCE seq2 UNIT COUNT 3 INDEX 0;
- 实例2/库2:
mysql> CREATE GROUP SEQUENCE seq2 UNIT COUNT 3 INDEX 1;
- 实例3/库3:
mysql> CREATE GROUP SEQUENCE seq2 UNIT COUNT 3 INDEX 2;
Time-based Sequence
语法
CREATE TIME SEQUENCE <name>
注意 存储Time-based Sequence值的列必须为BIGINT类型。
示例
创建一个Time-based Sequence:
请在命令行输入如下代码:
7mysql> CREATE TIME SEQUENCE seq3;
Simple Sequence
语法
CREATE SIMPLE SEQUENCE <name> [ START WITH <numeric value> ] [ INCREMENT BY <numeric value> ] [ MAXVALUE <numeric value> ][ CYCLE | NOCYCLE ]
参数说明
参数 | 说明 |
START WITH | Simple Sequence的起始值,若未指定,则默认起始值为1。 |
INCREMENT BY | Simple Sequence每次增长时的增量值(或称为间隔值或步长),若未指定,则默认值为1。 |
MAXVALUE | Simple Sequence允许的最大值,若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。 |
CYCLE 或 NOCYCLE | 两者只能选择其一,代表当Simple Sequence增长到最大值后,是否允许继续循环(即从START WITH重新开始)使用该Simple Sequence。若未指定,则默认值为NOCYCLE。 |
示例
创建一个Simple Sequence,起始值是1000,步长为2,最大值为99999999999,增长到最大值后不继续循环。
请在命令行输入如下代码:
mysql> CREATE SIMPLE SEQUENCE seq4 START WITH 1000 INCREMENT BY 2 MAXVALUE 99999999999 NOCYCLE;