gpt4 book ai didi

node.js - pg-promise:在事务中的下一个查询中使用一个查询的结果

转载 作者:搜寻专家 更新时间:2023-10-31 23:37:10 26 4
gpt4 key购买 nike

我是 node.js,带有用于 postgres 的 pg-promise,尝试按顺序执行包含 2 个插入的事务。第一次插入的结果 id 应该在事务中的下一个插入中使用。

如果任何查询失败则回滚。嵌套第二 db.none里面.then()第一 db.one不会回滚第一个查询。所以在这里使用事务。

我坚持在第二次使用第一次查询的结果。这是我现在拥有的。

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 生成的,用于多数据查询。但是想要使用先前查询的结果是不可行的。不是吗!

有没有办法得到id<above_id>从第一个 INSERT 开始?

最佳答案

方法sequence是否可以运行无限序列,这与您要实现的目标无关 - 标准/微不足道的事务:

await db.tx(async t => {
const id = await t.one('INSERT INTO table1(a, b) VALUES($1, $2) RETURNING id', [1, 2], a => +a.id);
await t.none('INSERT INTO table2(id, a_id) VALUES($1, $2)', [1, id]);
});

关于node.js - pg-promise:在事务中的下一个查询中使用一个查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43797917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com