0
おはようございます!私は私のプール内でnodejs mysql beginTransactionが複数の接続を使用しているか(私のトランザクション内に複数のクエリがある場合)、それがコミットされるまでは1つの接続しか使用しないのだろうか?node.js mysql pool beginトランザクションと接続
おはようございます!私は私のプール内でnodejs mysql beginTransactionが複数の接続を使用しているか(私のトランザクション内に複数のクエリがある場合)、それがコミットされるまでは1つの接続しか使用しないのだろうか?node.js mysql pool beginトランザクションと接続
複数のデータベース接続でトランザクションを共有することはできません。常に1つの接続に限定されます。最善の方法は、トランザクションを開始してロールバックまたはコミット後に解放する前にプールから接続を取得することです。
pool.getConnection(function(err, connection) {
connection.beginTransaction(function(err) {
if (err) { //Transaction Error (Rollback and release connection)
connection.rollback(function() {
connection.release();
//Failure
});
} else {
connection.query('INSERT INTO X SET ?', [X], (err, results) {
if (err) { //Query Error (Rollback and release connection)
connection.rollback(function() {
connection.release();
//Failure
});
} else {
connection.commit(function(err) {
if (err) {
connection.rollback(function() {
connection.release();
//Failure
});
} else {
connection.release();
//Success
}
});
}
});
}
});
});
トランザクション内で複数のクエリがある場合は、コミットまたはロールバックした後にのみ解放する必要がありますか?私はそれを解放する必要はありませんクエリのすべての成功?私が間違っている場合は私に訂正してください。ありがとうございます。 –
はい、トランザクションを終了する唯一のケースであるため、コミットまたはロールバック後に解放する必要があります。 –
ありがとう –