---
title: "创建序列 | OceanBase 文档中心"
description: "创建序列 您可以通过 CREATE SEQUENCE 语句用来创建序列。本文介绍如何创建序列。 语法 CREATE SEQUENCE [ schema. ] sequence_name { START WITH int_value |[ INCREMENT BY int_value ] |[ MINVALUE int…"
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

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

# 创建序列

更新时间：2026-05-20 13:19:15

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.0.0/zh-CN/300.developer-guide/200.create-and-manage-database-objects/1100.managing-and-creating-sequences/200.create-sequence.md)  

您可以通过 `CREATE SEQUENCE` 语句用来创建序列。本文介绍如何创建序列。

## 语法

```sql
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]。   > **注意**   >  >  > - 同时指定 `MINVALUE` 和 `MAXVALUE` 时，`MINVALUE` 必须小于 `MAXVALUE`。 > - `MAXVALUE` 和 `MINVALUE` 之差必须大于等于 INCREMENT BY 中 的 `int_value`。 |
| 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 | 指定序列的值循环生成，即序列在达到其最大值或最小值后继续生成值。在升序达到最大值后，它会生成最小值。在降序序列达到其最小值后，它会生成其最大值。   > **注意**   >  >  > - 如果指定了 `CYCLE`，而且 `INCREMENT BY int_value` 小于 0 时，必须指定 `MINVALUE`。 > - 如果指定了 `CYCLE`，`CACHE` 的数量不能超过一个 `CYCLE`。 |
| NOCYCLE | `NOCYCLE` 为默认值，指定序列在达到其最大值或最小值后无法生成更多值。SET GLOBALSET GLOBAL |

## 示例

在创建一个序列 `seq1` 并指定自增步数为 2。如下示例中，对 `seq1.nextval` 的第一个引用返回 1，第二个引用返回 2。每个后续引用的返回值都比前一个大 1。

1. 创建 `seq1` 序列。

   ```sql
   obclient> CREATE SEQUENCE seq1 MINVALUE 1 MAXVALUE 5 NOCYCLE NOORDER NOCACHE;
   Query OK, 0 rows affected

   ```

   > **说明**
   >
   >  
   >
   > 序列创建成功后，可以通过 `USER_SEQUENCES`、`ALL_SEQUENCES`、`DBA_SEQUENCES` 视图查看自己创建的序列。
 2. 对 `seq1.nextval` 的第一个引用。

   ```sql
   obclient> SELECT seq1.nextval FROM DUAL;
   +---------+
   | NEXTVAL |
   +---------+
   |       1 |
   +---------+
   1 row in set

   ```
 3. 第二个引用返回。

   ```sql
   obclient> SELECT seq1.nextval FROM DUAL;
   +---------+
   | nextval |
   +---------+
   |       2 |
   +---------+
   1 row in set

   ```

 上一篇 下一篇 ![有帮助](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) 咨询热线
