【发布时间】:2017-10-03 12:29:45
【问题描述】:
我是带有 pg-promise for postgres 的 node.js,尝试按顺序执行 2 个插入的事务。第一次插入的结果 id 应该在事务的下一次插入中使用。
如果任何查询失败,则回滚。
在第一个 db.one 的 .then() 内嵌套第二个 db.none 不会回滚第一个查询。所以在这里使用事务。
我被困在第二次使用第一次查询的结果。 这是我现在所拥有的。
db.tx(function (t) {
return t.sequence([
// generated using pgp.helpers.insert for singleData query
t.one("INSERT INTO table(a, b) VALUES('a', 'b') RETURNING id"),
t.none("INSERT INTO another_table(id, a_id) VALUES(1, <above_id>), (2, <above_id>)")
]);
})...
第二个查询是使用 pgp.helpers.insert 生成的,用于多数据查询。但是想要使用先前查询的结果是不可行的。不是吗!
有没有办法从第一个 INSERT 中获取 id 即 <above_id> ?
【问题讨论】:
-
应该有 t.one 结果的对象。它将包含您的 ID。等待@vitay-t 解释:)
-
如果您希望它们按顺序运行,为什么要使用
batch? -
@pozs 这是一个错误。 t.sequence 就是我的意思。编辑了问题。
-
@Maven 您希望从交易中获得什么数据?
标签: node.js postgresql transactions pg-promise