您可以通过 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
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




