首批通过分布式安全可靠测评,为关键业务系统打造
ALTER SEQUENCE
更新时间:2026-04-30 18:31:43
描述
该语句用于更改现有序列的增量、最小值和最大值、缓存数量和行为,对应操作仅影响后续的序列号。
说明
您只能修改当前 Schema 下的序列,或者拥有该序列的 ALTER 权限。
语法
ALTER SEQUENCE [schema.]sequence_name
{
RESTART [START WITH integer]
| MINVALUE integer | NOMINVALUE
| MAXVALUE integer | NOMAXVALUE
| INCREMENT BY integer
| CACHE integer | NOCACHE
| ORDER | NOORDER
| CYCLE | NOCYCLE
}
语法说明
| 字段 | 描述 |
|---|---|
| schema. | 指定包含序列的 Schema。如果省略 Schema,则数据库会在用户当前所在的 Schema 中更改序列。 |
| sequence_name | 要更改的序列名称。 |
| RESTART | 重置序列值。升序时 从 MINVALUE 重新开始取值;降序时从 MAXVALUE 重新开始取值;或者,使用 START WITH int_value 从 int_value 处开始取值。 |
| MINVALUE int_value | 更改序列的最小值,int_value 的取值范围是 [-9223372036854775808,9223372036854775807]。 |
| NOMINVALUE | 如果更改为 NOMINVALUE,则升序时最小值为 1,降序时最小值为 -9223372036854775808。 |
| MAXVALUE int_value | 更改序列的最大值,int_value 的取值范围是 [-9223372036854775808,9223372036854775807]。新指定的 MAXVALUE 不能小于当前序列号的值。 注意
|
| NOMAXVALUE | 如果更改为 NOMAXVALUE,则升序时最大值为9223372036854775807,降序时最大值为 -1。 |
| INCREMENT BY int_value | 更改序列的自增步数。int_value 不可以为 0。如果指定为正数,则序列为升序;如果指定为负数,则序列为降序。不指定时缺省值为 1。 |
| CACHE int_value | 更改在内存中预分配的自增值个数,int_value 默认为 20。CACHE int_value 的值必须大于 1,如果 CACHE INT_VALUE 的值为 1,则等价于 NOCACHE。 |
| NOCACHE | 更改序列的值为未预先分配。如果同时省略 CACHE 和 NOCACHE,则数据库默认缓存 20 |
| ORDER | 更改序列的值为按顺序生成。 |
| NOORDER | 如果更改为 NOORDER,则指定不保证序列的值按顺序生成。 |
| CYCLE | 更改序列的值为循环生成,即序列在达到其最大值或最小值后继续生成值。在升序达到最大值后,它会生成最小值。在降序序列达到其最小值后,它会生成其最大值。 注意
|
| NOCYCLE | NOCYCLE 为默认值,如果更改为 NOCYCLE,则指定序列在达到其最大值或最小值后无法生成更多值。 |
示例
修改自增列
seq1的最大值,并指定自增值循环生成。obclient> CREATE SEQUENCE seq1 START WITH 1 INCREMENT BY 1 MAXVALUE 2048 CYCLE; obclient> ALTER SEQUENCE seq1 MAXVALUE 4096 CYCLE;更改序列
seq2的最大值和自增步数,开启CYCLE和ORDER,并指定NOCACHE以指示序列的值未预先分配。obclient> CREATE SEQUENCE seq2 MINVALUE 1 MAXVALUE 1000 START WITH 1 INCREMENT BY 1 CACHE 20; obclient> ALTER SEQUENCE seq2 MAXVALUE 1500 INCREMENT BY 5 CYCLE NOCACHE ORDER;重置序列值,并从 3 开始取值。
obclient> ALTER SEQUENCE seq2 RESTART; obclient> ALTER SEQUENCE seq2 RESTART START WITH 3;RESTART的位置可以在选项的任意位置。如下示例中的两条重置序列值的 SQL 语句是等价的。obclient> ALTER SEQUENCE seq2 START WITH 3 RESTART MINVALUE -100 CYCLE; obclient> ALTER SEQUENCE seq2 RESTART START WITH 3 MINVALUE -100 CYCLE;