You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL技术问询:如何在INSERT时同步使用Generator的NEXT VALUE

直接在INSERT语句中调用生成器插入多条数据

你可以直接在INSERT INTO的VALUES子句中调用生成器的取值函数,每条数据都会自动获取生成器的下一个递增值,无需单独执行SELECT NEXT VALUE语句。以下是主流数据库的具体写法:

Firebird(对应你提到的Generator)

Firebird中使用GEN_ID(生成器名, 步长)函数获取生成器的下一个值,步长填1即可实现递增:

INSERT INTO 你的表名 (counter列名, 其他列1, 其他列2)
VALUES 
    (GEN_ID(counter, 1), '数据1值1', '数据1值2'),
    (GEN_ID(counter, 1), '数据2值1', '数据2值2'),
    (GEN_ID(counter, 1), '数据3值1', '数据3值2');

PostgreSQL(序列Sequence)

PostgreSQL用nextval('序列名')函数获取下一个序列值:

INSERT INTO 你的表名 (counter列名, 其他列)
VALUES 
    (nextval('counter'), '内容A'),
    (nextval('counter'), '内容B'),
    (nextval('counter'), '内容C');

SQL Server(序列Sequence)

SQL Server使用NEXT VALUE FOR 序列名语法:

INSERT INTO 你的表名 (counter列名, 其他列)
VALUES 
    (NEXT VALUE FOR counter, '值X'),
    (NEXT VALUE FOR counter, '值Y'),
    (NEXT VALUE FOR counter, '值Z');

进阶优化:设置列默认值

如果希望每次插入时自动填充counter列,无需手动调用生成器函数,可以给该列设置默认值:
以Firebird为例:

ALTER TABLE 你的表名 
ALTER COLUMN counter列名 SET DEFAULT GEN_ID(counter, 1);

之后插入数据时只需指定其他列:

INSERT INTO 你的表名 (其他列1, 其他列2)
VALUES 
    ('数据1值1', '数据1值2'),
    ('数据2值1', '数据2值2');

内容的提问来源于stack exchange,提问作者Specter771908

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:24:21