node.js mysql 池 beginTransaction & 连接
node.js mysql pool beginTransaction & connection
我一直在想 beginTransaction
in node.js mysql 是否在一个池中使用多个连接(如果我在交易中有多个查询)还是只使用一个连接直到提交?
一个事务不能被多个数据库连接共享,并且总是限于一个连接。最好的方法是在开始事务之前从池中获取连接,并在回滚或提交后释放它。
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
}
});
}
});
}
});
});
我一直在想 beginTransaction
in node.js mysql 是否在一个池中使用多个连接(如果我在交易中有多个查询)还是只使用一个连接直到提交?
一个事务不能被多个数据库连接共享,并且总是限于一个连接。最好的方法是在开始事务之前从池中获取连接,并在回滚或提交后释放它。
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
}
});
}
});
}
});
});