【发布时间】:2017-07-18 02:36:50
【问题描述】:
js 和 mysql。我遇到了交易问题。
在下面的函数中,我完全按照他们在https://github.com/mysqljs/mysql#transactions 中所说的那样做。但它不起作用:|
function insertMemoTransaction(){
pool.getConnection(function(error, connection){
if(error){
alert("Somthing is wrong with your connection");
}
connection.beginTransaction(function(error){
if(error) { throw error; }
var idfield = scope.find('input[name="Party_Id"]');
var Party_Id;
if(idfield.val() == '-1'){
var newParty = {
// An object
};
connection.query("INSERT INTO ?? SET ?",['Party', newParty],function(error, result, fields){
if(error){
return connection.rollback(function(){
throw error;
});
}
else{
Party_Id = result.insertId;
var infoObj = {
// an Object
}
connection.query('INSERT INTO ?? SET ?', ['Memo_Info', infoObj], function(error, result, fields){
if(error){
return connection.rollback(function(){
throw error;
});
}
});
}
});
}
else{
Party_Id = idfield.val();
var infoObj = {
// an Object
}
connection.query('INSERT INTO ?? SET ?', ['Memo_Info', infoObj], function(error, result, fields){
if(error){
return connection.rollback(function(){
throw error;
});
}
});
}
connection.commit(function(error) {
if (error) {
return connection.rollback(function() {
throw error;
});
}
console.log('Transaction Complete.');
connection.release();
});
});
});
}
我写这段代码是为了在node-mysql中做一个事务,但是如果,
connection.query('INSERT INTO ?? SET ?', ['Memo_Info', infoObj], function(error, result, fields)
这个查询没有运行,影响
connection.query("INSERT INTO ?? SET ?",['Party', newParty],function(error, result, fields)
这个不会回滚。
[我已设置自动提交 = 0]
【问题讨论】:
-
您的表使用什么引擎?是 InnoDB 还是其他支持事务的引擎?
标签: mysql node.js transactions node-mysql