版本:7.0.0

ALTER SEQUENCE ​

功能描述 ​

修改一个现有的序列的参数。

注意事项 ​

  • 在修改序列的某些属性(如最小值和最大值)时,需要确保新设置的值在逻辑上是合理的,例如最小值应该小于最大值。
  • 如果序列已经达到了其最大值并且设置为循环(CYCLE),则在下次获取值时将从最小值重新开始。如果未设置循环且达到最大值,再获取值时会报错。

语法格式 ​

  • 修改序列属性

    ALTER SEQUENCE [schema.]sequence_name [ INCREMENT BY increment ]
        [ MINVALUE minvalue | NOMINVALUE ] [ MAXVALUE maxvalue | NOMAXVALUE ]
        [ CACHE cachevalue | NOCACHE ] [ CYCLE | NOCYCLE ];

参数说明 ​

  • schema

    用户名。默认是当前用户。

  • sequence_name

    将要修改的序列名称。

  • INCREMENT

    指定序列的步长。当设置的步长大于0,则序列递增;步长小于0,则序列递减。默认值为1。

  • MINVALUE minvalue | NOMINVALUE

    指定序列的最小值。如果没有声明minvalue或者声明了NOMINVALUE,则递增序列的默认值为1,递减序列的默认值为-263+1。

  • MAXVALUE maxvalue | NOMAXVALUE

    指定序列的最大值。如果没有声明maxvalue或者声明了NOMAXVALUE,则递减序列的默认值为-1,递增序列的默认值为263-1。

  • CACHE cachevalue | NOCACHE

    为了快速访问,而在内存中预先存储序列号的个数。如果没有指定,默认值为NOCACHE,默认序列号个数为1。

  • CYCLE | NOCYCLE

    用于使序列达到maxvalue或者minvalue后可循环并继续下去。

    如果声明了NOCYCLE,则在序列达到其最大值后任何对nextval的调用都会返回一个错误。

    若修改序列为CYCLE,则不能保证序列的唯一性。

    默认值为NOCYCLE。

示例 ​

-- 创建一个名为serial的递增序列,从101开始。
SQL> CREATE SEQUENCE serial START WITH 101;

-- 修改序列步长为2
SQL> ALTER SEQUENCE serial INCREMENT BY 2;

-- 修改序列最小值为90
SQL> ALTER SEQUENCE serial MINVALUE 90;

-- 修改序列最大值为200
SQL> ALTER SEQUENCE serial MAXVALUE 200;

-- 修改序列缓冲值为10
SQL> ALTER SEQUENCE serial CACHE 10;

-- 修改序列循环
SQL> ALTER SEQUENCE serial CYCLE;

-- 删除序列
SQL> DROP SEQUENCE serial;