跳到主要内容

CREATE SEQUENCE

引入或更新于:v1.2.807

在 Databend 中创建一个新的序列(Sequence)。

序列(Sequence)是一种自动生成唯一数字标识符的对象,通常用于为表行分配不同的值(例如用户 ID)。虽然序列保证值的唯一性,但保证连续性(即可能出现间隙)。

语法

CREATE [ OR REPLACE ] SEQUENCE [ IF NOT EXISTS ] <sequence>
[ START [ = ] <start_value> ]
[ INCREMENT [ = ] <increment_value> ]
参数描述默认值
<sequence>要创建的序列名称。-
START序列的初始值。1
INCREMENT每次调用 NEXTVAL 时的增量值。1

访问控制要求

权限对象类型描述
CREATE SEQUENCE全局创建序列。

要创建序列,执行操作的用户或 current_role 必须拥有 CREATE SEQUENCE 权限

备注

enable_experimental_sequence_rbac_check 设置控制序列级别的访问控制,默认禁用。
此时创建序列仅需用户拥有超级用户权限,绕过详细的 RBAC 检查。
启用后,将在创建序列时执行细粒度权限验证。

该功能为实验性质,未来可能默认开启。

示例

基本序列

使用默认设置创建序列(从 1 开始,步长为 1):

CREATE SEQUENCE staff_id_seq;

CREATE TABLE staff (
staff_id INT,
name VARCHAR(50),
department VARCHAR(50)
);

INSERT INTO staff (staff_id, name, department)
VALUES (NEXTVAL(staff_id_seq), 'John Doe', 'HR');

INSERT INTO staff (staff_id, name, department)
VALUES (NEXTVAL(staff_id_seq), 'Jane Smith', 'Finance');

SELECT * FROM staff;

┌───────────────────────────────────────────────────────┐
│ staff_id │ name │ department │
├─────────────────┼──────────────────┼──────────────────┤
2 │ Jane Smith │ Finance │
1 │ John Doe │ HR │
└───────────────────────────────────────────────────────┘

自定义起始值与步长

创建从 1000 开始、步长为 10 的序列:

CREATE SEQUENCE order_id_seq START = 1000 INCREMENT = 10;

CREATE TABLE orders (
order_id BIGINT,
order_name VARCHAR(100)
);

INSERT INTO orders (order_id, order_name)
VALUES (NEXTVAL(order_id_seq), 'Order A');

INSERT INTO orders (order_id, order_name)
VALUES (NEXTVAL(order_id_seq), 'Order B');

SELECT * FROM orders;

┌──────────────────────────────────┐
│ order_id │ order_name │
├────────────────┼─────────────────┤
1000Order A │
1010Order B │
└──────────────────────────────────┘
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册