基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
创建序列
更新时间:2026-05-20 13:19:15
您可以通过 CREATE SEQUENCE 语句用来创建序列。本文介绍如何创建序列。
语法
CREATE SEQUENCE [ schema. ] sequence_name
{ START WITH int_value
|[ INCREMENT BY int_value ]
|[ MINVALUE int_value | NOMINVALUE ]
|[ MAXVALUE int_value | NOMAXVALUE ]
|[ CACHE int_value | NOCACHE ]
|[ ORDER | NOORDER ]
|[ CYCLE | NOCYCLE ]
};
参数说明
| 参数 | 描述 |
|---|---|
| schema. | 指定包含序列的 Schema。 如果省略 Schema,则数据库会在用户当前所在的 Schema 中创建序列。SET GLOBALSET GLOBAL |
| sequence_name | 要创建的序列名称。SET GLOBALSET GLOBAL |
| MINVALUE int_value | 指定序列的最小值,int_value 的取值范围是 [-9223372036854775808 ~ 9223372036854775807]。SET GLOBALSET GLOBAL |
| NOMINVALUE | NOMINVALUE 为默认值。 如果指定为 NOMINVALUE,则升序时最小值为 1,降序时最小值为-9223372036854775808。SET GLOBALSET GLOBAL |
| MAXVALUE int_value | 指定序列的最大值,int_value 的取值范围是 [-9223372036854775808 ~ 9223372036854775807]。
注意 |
| NOMAXVALUE | NOMAXVALUE 为默认值。 如果指定为 NOMAXVALUE,则升序时最大值为 9223372036854775807,降序时最大值为 -1。SET GLOBALSET GLOBAL |
| START WITH int_value | 指定序列的起始值。int_value 必须小于等于 MAXVALUE,且大于等于 MINVALUE。 如果不指定,则升序时默认取值为最小值,降序时默认取值为最大值。SET GLOBAL |
| INCREMENT BY int_value | 指定序列的自增步数。int_value 不可以为 0。 如果指定为正数,则序列为升序;如果指定为负数,则序列为降序。不指定时缺省值为 1。SET GLOBALSET GLOBAL |
| CACHE int_value | 指定在内存中预分配的自增值个数,int_value 默认为 20。 CACHE int_value 的值必须大于 1,如果 CACHE INT_VALUE 的值为 1,则等价于 NOCACHE。SET GLOBAL |
| NOCACHE | 指定序列的值为未预先分配。 如果同时省略 CACHE 和 NOCACHE,则数据库默认缓存 20 个序列号。SET GLOBALSET GLOBAL |
| ORDER | 指定序列的值按顺序生成。SET GLOBALSET GLOBAL |
| NOORDER | NOORDER 为默认值,即不保证序列的值按顺序生成。SET GLOBALSET GLOBAL |
| CYCLE | 指定序列的值循环生成,即序列在达到其最大值或最小值后继续生成值。在升序达到最大值后,它会生成最小值。在降序序列达到其最小值后,它会生成其最大值。
注意 |
| NOCYCLE | NOCYCLE 为默认值,指定序列在达到其最大值或最小值后无法生成更多值。SET GLOBALSET GLOBAL |
示例
在创建一个序列 seq1 并指定自增步数为 2。如下示例中,对 seq1.nextval 的第一个引用返回 1,第二个引用返回 2。每个后续引用的返回值都比前一个大 1。
创建
seq1序列。obclient> CREATE SEQUENCE seq1 MINVALUE 1 MAXVALUE 5 NOCYCLE NOORDER NOCACHE; Query OK, 0 rows affected说明
序列创建成功后,可以通过
USER_SEQUENCES、ALL_SEQUENCES、DBA_SEQUENCES视图查看自己创建的序列。对
seq1.nextval的第一个引用。obclient> SELECT seq1.nextval FROM DUAL; +---------+ | NEXTVAL | +---------+ | 1 | +---------+ 1 row in set第二个引用返回。
obclient> SELECT seq1.nextval FROM DUAL; +---------+ | nextval | +---------+ | 2 | +---------+ 1 row in set