私はpostgresのpg-promiseを持つnode.jsで、2つの挿入を順番に実行しようとしています。最初の挿入の結果IDは、トランザクションの次の挿入時に使用する必要があります。pg-promise:トランザクション内の次のクエリで1つのクエリの結果を使用する
クエリのいずれかが失敗した場合のロールバック。 ネスティング2nd db.none
の内部.then()
の最初のdb.one
は、最初のクエリをロールバックしません。ここでトランザクションを使用します。
第2問の第1問合せの結果を使用しています。 これは私が今持っているものです。
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>)")
]);
})...
2番目のクエリは、複数データクエリに対してpgp.helpers.insertを使用して生成されます。しかし、これは前のクエリの結果を使いたいとは考えにくいです。ではない !
id
、つまり<above_id>
を最初のINSERTから取得する方法はありますか?
t.one結果にオブジェクトがあるはずです。それはあなたのIDを含みます。 @ vitay-tが説明するのを待つ: –
それらを順番に実行したいのであれば 'batch'を使うのはなぜですか? – pozs
@pozsそれは間違いだった。 t.sequenceは私が意味するものです。質問を編集しました。 – mythicalcoder