Một giao dịch không thể được chia sẻ bởi nhiều kết nối cơ sở dữ liệu và luôn bị giới hạn trong một kết nối duy nhất. Cách tiếp cận tốt nhất là có được kết nối từ nhóm trước khi bạn bắt đầu giao dịch và giải phóng nó sau khi khôi phục hoặc cam kết.
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
}
});
}
});
}
});
});