【发布时间】:2020-05-15 19:41:04
【问题描述】:
是否可以在 pg-promise 多行插入中使用 nextval 函数? 我有一个数据库(很遗憾我无法更改),其中 id 必须通过客户端插入,如下所示:
INSERT INTO some_object (object_id, object_name)
VALUES (nextval('some_object_seq'), ${object_name})
RETURNING object_id;
这适用于一个插入。但现在我必须一次插入多行并尝试 pgp.helpers.insert:
const cs = pgp.helpers.ColumnSet(['object_id', 'object_name'], { table });
const query = pgp.helpers.insert(values, cs) + 'RETURNING object_id';
database.many(query).then(data => {
return data
}).catch(error => {
logger.error(error, query);
});
在这种情况下有什么方法可以使用 nextval('some_object_seq') 吗?遗憾的是,我无法更改表定义中 id 列的默认值。
【问题讨论】:
-
您确定
object_id列还没有DEFAULT的序列吗? -
你可以给你的
ColumnSet一个default expression for theobject_idcolumn -
是的,我确定没有设置 DEFAULT,我无法更改。我试过 { name: "object_id", def: "nextval('some_object_seq')" } 但 nextval 然后作为字符串发送而不被识别为函数。
-
啊,我忘了添加这个:mod:'^',谢谢你指出我正确的方向!
标签: node.js postgresql pg-promise