---
title: "创建序列 - OceanBase 数据库 V4.3.4 | OceanBase 文档中心"
description: 创建序列 在 OceanBase 数据库中，序列（Sequence）是数据库按照一定规则生成的自增数字序列号，通常是一组间隔的数值（为数字类型）。由于序列具有自增的特性，故通常会被用作主键和唯一键。 可以使用 CREATE SEQUENCE 语句来创建序列。序列提供了两个伪列 CURRVAL 和 NEXTVAL ，用…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.4

# 创建序列

更新时间：2024-12-26 23:00:00

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.4/zh-CN/700.reference/300.database-object-management/100.manage-object-of-mysql-mode/700.manage-sequence-of-mysql-mode/100.create-a-sequence-of-mysql-mode.md)  

在 OceanBase 数据库中，序列（Sequence）是数据库按照一定规则生成的自增数字序列号，通常是一组间隔的数值（为数字类型）。由于序列具有自增的特性，故通常会被用作主键和唯一键。

可以使用 `CREATE SEQUENCE` 语句来创建序列。序列提供了两个伪列 `CURRVAL`和 `NEXTVAL`，用于返回当前的序列值和下一个序列值。每当查询 `NEXTVAL` 都会推进 `CURRVAL` 值。

SQL 语法如下：

```sql
CREATE SEQUENCE [IF NOT EXISTS] [database_name.]sequence_name
[MINVALUE int_value | NOMINVALUE]
[MAXVALUE int_value | NOMAXVALUE]
[START WITH int_value]
[INCREMENT BY int_value]
[CACHE int_value | NOCACHE]
[ORDER | NOORDER]
[CYCLE | NOCYCLE];

```

语句使用说明：

- 执行该语句的用户需要具备 `CREATE` 权限。
 - `IF NOT EXISTS`：可选，如果待创建的序列已存在，并且没有指定 `IF NOT EXISTS`，则系统会报错。
 - `database_name.` ：可选，用于指定序列所在的数据库。如果不指定 `database_name.`，则默认为创建当前登录数据库的序列。
 - `MINVALUE int_value | NOMINVALUE`：用于指定序列的最小值，取值范围为 [-10^27^ ~ (10^27^-1)]。

  如果指定为 `NOMINVALUE`，则升序时最小值为 1，降序时最小值为 -(10^27^-1)。

  如果不指定`MINVALUE`，则缺省为 `NOMINVALUE`。
 - `MAXVALUE int_value | NOMAXVALUE`：用于指定序列的最大值，取值范围为 [(-10^27^+1) ~ (10^28^-1)]。

  如果指定为 `NOMAXVALUE`，则升序时最大值为 `(10` ^28^ `-1)`，降序时最大值为 `-1`。

  如果不指定 `MAXVALUE`，则缺省为 `NOMAXVALUE`。
 - `START WITH`：用于指定序列的起始值。该值必须小于等于 `MAXVALUE`，且大于等于 `MINVALUE`。如果不指定，则升序时默认取值为最小值，降序时默认取值为最大值。
 - `INCREMENT BY`：用于指定序列的自增步数。该值不可以为 `0`。如果指定为正数，则序列为升序；如果指定为负数，则序列为降序。如果不指定，则缺省值为 `1`。
 - `CACHE`：用于指定在内存中预分配的自增值个数，默认为 `20`。
 - `ORDER | NOORDER`：用于指定序列的值是否按顺序生成。`ORDER` 表示按顺序生成，`NOORDER` 表示不按顺序生成。默认为 `NOORDER`。
 - `CYCLE | NOCYCLE`：用于指定序列的值是否循环生成。`CYCLE` 表示循环生成，`NOCYCLE` 表示不循环生成。默认为 `NOCYCLE`。

#### 注意

- 如果同时指定 `MINVALUE` 和 `MAXVALUE`，则 `MINVALUE` 必须小于 `MAXVALUE`。
 - `MAXVALUE` 和 `MINVALUE` 之差必须大于等于 `INCREMENT BY int_value`。
 - `CACHE` 的值必须大于 `1`，如果 `CACHE INT_VALUE` 的值为 `1`，则等价于 `NOCACHE`。
 - 指定了 `CYCLE`，且 `INCREMENT BY` 的值小于 `0` 时，必须指定 `MINVALUE`。
 - 指定了 `CYCLE` 时，`CACHE` 的数量必须不能超过一个 `CYCLE`。

创建一个序列 `seq1` 并指定自增步数为 `2` 的示例如下：

```sql
obclient> CREATE SEQUENCE seq1 START WITH 1 MINVALUE 1 MAXVALUE 10 INCREMENT BY 2 NOCYCLE NOORDER CACHE 30;

```

更多 `CREATE SEQUENCE` 语句的信息，参见 [CREATE SEQUENCE](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001577292)。

## 相关文档

更多序列相关的操作，参见以下文档：

- [查看序列](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576006)
 - [引用序列](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576003)
 - [修改序列](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576007)
 - [删除序列](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576005)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
