【发布时间】:2020-05-04 13:26:38
【问题描述】:
我正在尝试应用 Trasnactions(beginTransaction、rollback 和 commit。但是,如果添加发票的查询(第一查询)成功执行,我想更新供应商金额(第二查询)。我打算通过将UPDATE 更改为UPDATEEE,在第二个查询中写入错误的语法。我认为这应该是rollback。我收到查询语法错误消息,但添加了发票(第一个查询成功执行)。
我做错了什么?
Invoice.addNewInvoice = function (invoice_data,result){
sql.beginTransaction(function(err){
if (err) { throw err; }
sql.query('INSERT INTO invoice SET ?',invoice_data, function(err,res){
if(err){
sql.rollback(function() {
throw err;
});
}else{
sql.query('UPDATEEEEE supplier SET supplier_amount = supplier_amount + ' + invoice_data.invoice_amount + ' WHERE supplier_id = ' + invoice_data.supplier_id, function(err,res){
if(err){
sql.rollback(function() {
throw err;
});
}
})
sql.commit(function(err) {
if (err) {
sql.rollback(function() {
throw err;
});
}else{
result(null,res);
}
});
}
});
});
}
【问题讨论】:
-
您是否在与 MySQL 的连接中关闭了自动提交功能?
-
@DaveD 我尝试
set autocommit = 0' it shows that it turned off, i even ensure it bySELECT @@autocommit` 结果是0但这并没有改变任何东西。你有什么想法吗?
标签: javascript node.js transactions rollback