请指导我如何使用expressjs在sqlite3中执行事务管理。我试过这种方式,但没有成功。
app.get('/transaction', function(req, res){
db.serialize(function() {
try{
db.run("BEGIN");
db.run("UPDATE emp SET balance = 10000 WHERE eid = 1", function(err, row){
if (err){
throw (e);
}
});
db.run("UPDATE temp SET deptno = 2000 WHERE eid = 2", function(err, row){
//this temp table not exists it should be rollback and server should not
//stop
if (err){
throw (e);
}
});
db.run('commit');
res.end("Transaction succeed");
}//try
catch(e){
//console.log(e);
res.end("Transaction cancelled");
db.run('rollback');
//console.log(e);
}//catch
});
});
答案 0 :(得分:0)
app.get('/transaction', function(req, res){
db.serialize(function() {
db.run("BEGIN");
db.run("UPDATE emp SET deptno = 10 WHERE eid = 1", function(err, row){
if (err){
console.log(err);
res.end("Transaction cancelled");
}
else{
db.run("UPDATE temp SET deptno = 20 WHERE eid = 2", function(err, row){
if (err){
console.log(err);
db.rollback;
res.end("Transaction cancelled");
}
else{
db.run('commit');
res.end("Transaction succeed");
}
});
}
});
});
});