En transaktion kan inte delas av flera databasanslutningar och är alltid begränsad till en enda anslutning. Det bästa tillvägagångssättet skulle vara att skaffa en anslutning från poolen innan du påbörjar transaktionen och släppa den efter en rollback eller en commit.
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], function(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
}
});
}
});
}
});
});