CREATE SEQUENCE
在 TiDB Cloud Lake 中创建一个新的序列。
序列是一种能够自动生成唯一数字标识符的对象,通常用于为表中的行分配不同的值(例如用户 ID)。虽然序列能够保证值的唯一性,但不能保证连续性(即,可能会出现间隔)。
语法
CREATE [ OR REPLACE ] SEQUENCE [ IF NOT EXISTS ] <sequence>
[ START [ = ] <start_value> ]
[ INCREMENT [ = ] <increment_value> ]
访问控制要求
要创建序列,执行该操作的用户或 current_role 必须具有 CREATE SEQUENCE 权限。
示例
基本序列
使用默认设置创建一个序列(从 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 │
├────────────────┼─────────────────┤
│ 1000 │ Order A │
│ 1010 │ Order B │
└──────────────────────────────────┘