本文主要介绍如何修改Sequence的起始值和转换类型(单元化的Group Sequence除外)。
注意事项
在对Sequence的类型进行修改时,您需要注意如下事项:
- 当Group Sequence为大于一个单元的单元化Group Sequence时,不支持转换到其它类型或修改单元化相关的参数,强行转换可能会导致Sequence无法正常工作。
- 修改START WITH参数的值时,需要仔细评估已经产生的Sequence值,以及生成新Sequence值的速度,防止产生冲突。如非必要,请谨慎修改START WITH参数值。
- 通过
ALTER SEQUENCE CHANGE TO
语句转换Sequence类型时,必须指定START WITH参数的值,若没有CHANGE TO
子句,则不强制。
New Sequence
语法ALTER SEQUENCE <name> [ CHANGE TO GROUP | TIME ]
START WITH <numeric value>
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]
参数说明参数 | 说明 |
---|---|
START WITH | New Sequence的起始值,若未指定,则默认起始值为1。 |
INCREMENT BY | New Sequence每次增⻓时的增量值(或称为间隔值、步长),若未指定,则默认值为1。仅在修改New Sequence自身属性时支持,转换为Group或Time Sequence则不支持。 |
MAXVALUE | New Sequence允许的最大值,必须为正整数。若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。 仅在修改New Sequence自身属性时支持,转换为Group或Time Sequence则不支持。 |
CYCLE或NOCYCLE | 两个参数只能选择其中一个,说明如下:
仅在修改New Sequence自身属性时支持,转换为Group或Time Sequence则不支持。 |
说明
- 转换到Group Sequence时,仅支持默认的一个单元。
- 转换到Time-based Sequence时,指定起始值无意义。
Group Sequence
语法ALTER SEQUENCE <name> [ CHANGE TO NEW | TIME ]
START WITH <numeric value>
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]
参数说明参数 | 说明 |
---|---|
START WITH | 起始值,若未指定,则默认起始值为1。 |
INCREMENT BY | New Sequence每次增⻓时的增量值(或称为间隔值、步长),若未指定,则默认值为1。仅在转换为New Sequence时支持。 |
MAXVALUE | New Sequence允许的最大值,必须为正整数。若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。仅在转换为New Sequence时支持。 |
CYCLE或NOCYCLE | 两个参数只能选择其中一个,仅在转换为New Sequence时支持。说明如下:
|
说明
转换到Time-based Sequence时,指定起始值、步长、最大值和循环分配参数无意义。
Time-based Sequence
语法ALTER SEQUENCE <name> [ CHANGE TO NEW | GROUP ]
START WITH <numeric value>
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]
参数说明参数 | 说明 |
---|---|
START WITH | 起始值,若未指定,则默认起始值为1。 |
INCREMENT BY | New Sequence每次增⻓时的增量值(或称为间隔值、步长),若未指定,则默认值为1。仅在转换为New Sequence时支持。 |
MAXVALUE | New Sequence允许的最大值,必须为正整数。若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。仅在转换为New Sequence时支持。 |
CYCLE或NOCYCLE | 两个参数只能选择其中一个,仅在转换为New Sequence时支持。说明如下:
|
说明 转换到Group Sequence时,仅支持默认的一个单元,指定起始值、步长、最大值和循环分配参数无意义。
示例
- 修改一个Sequence的起始值:
ALTER SEQUENCE seq1 START WITH 1000000;
- 将一个Sequence转换为Group Sequence:
ALTER SEQUENCE seq2 CHANGE TO GROUP START WITH 2000000;
- 将一个Sequence转换为Time-based Sequence:
ALTER SEQUENCE seq3 CHANGE TO TIME;
- 将一个Sequence转换为New Sequence,使用默认的步长、最大值、循环分配参数:
ALTER SEQUENCE seq4 CHANGE TO NEW START WITH 100;
- 将一个Sequence转换为New Sequence,使用自定义的步长、最大值、循环分配参数:
ALTER SEQUENCE seq5 CHANGE TO NEW START WITH 200 INCREMENT BY 2 MAXVALUE 300 NOCYCLE;