本文主要介绍如何修改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 WITHNew Sequence的起始值,若未指定,则默认起始值为1。
INCREMENT BYNew Sequence每次增⻓时的增量值(或称为间隔值、步长),若未指定,则默认值为1。仅在修改New Sequence自身属性时支持,转换为Group或Time Sequence则不支持。
MAXVALUENew Sequence允许的最大值,必须为正整数。若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。 仅在修改New Sequence自身属性时支持,转换为Group或Time Sequence则不支持。
CYCLE或NOCYCLE两个参数只能选择其中一个,说明如下:
  • CYCLE:当New Sequence的值增长到最大值后,允许从起始值开始重新循环。
  • NOCYCLE:当New Sequence的值增长到最大值后,不允许从起始值开始重新循环,再分配会报错,如果参数未指定,默认为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 BYNew Sequence每次增⻓时的增量值(或称为间隔值、步长),若未指定,则默认值为1。仅在转换为New Sequence时支持。
MAXVALUENew Sequence允许的最大值,必须为正整数。若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。仅在转换为New Sequence时支持。
CYCLE或NOCYCLE两个参数只能选择其中一个,仅在转换为New Sequence时支持。说明如下:
  • CYCLE:当Sequence的值增长到最大值后,允许从起始值开始重新循环。
  • NOCYCLE:当New Sequence的值增长到最大值后,不允许从起始值开始重新循环,再分配会报错,如果参数未指定,默认为NOCYCLE。
说明

转换到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 BYNew Sequence每次增⻓时的增量值(或称为间隔值、步长),若未指定,则默认值为1。仅在转换为New Sequence时支持。
MAXVALUENew Sequence允许的最大值,必须为正整数。若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。仅在转换为New Sequence时支持。
CYCLE或NOCYCLE两个参数只能选择其中一个,仅在转换为New Sequence时支持。说明如下:
  • CYCLE:当Sequence的值增长到最大值后,允许从起始值开始重新循环。
  • NOCYCLE:当New Sequence的值增长到最大值后,不允许从起始值开始重新循环,再分配会报错,如果参数未指定,默认为NOCYCLE。
说明 转换到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;