#Transactions
テストを実施する前に物理ファイルにジャーナル処理を開始します。
STRJRNPF FILE(MYLIB/MEMBER MYLIB/MEMBER2) JRN(MYLIB/JRN) IMAGES(*BOTH)
SQLtransactions.js
//コミットされる例
app.get("/tranCommit", function (req, res, next) {
pool.transaction(function (tran) {
var Id = 110;
return tran.update("insert into member (ID,LNAME,FNAME,PROF,TOKUTEN) VALUES(?,?,?,?,?)",
[Id, "徳川","家綱",'4代目', 4]).then(function () {
return tran.update("insert into member2 (ID,LNAME,FNAME,PROF,TENSU) VALUES(?,?,?,?,?)",
[Id, "徳川","家綱",'4代目', 4]);
});
});
res.send('end');
});
//ロールバックされる例。member2.TENSUに文字をセット
app.get("/tranRollback", function (req, res, next) {
pool.transaction(function (tran) {
var Id = 111;
return tran.update("insert into member (ID,LNAME,FNAME,PROF,TOKUTEN) VALUES(?,?,?,?,?)",
[Id, "徳川","綱吉",'5代目', 5]).then(function () {
return tran.update("insert into member2 (ID,LNAME,FNAME,PROF,TENSU) VALUES(?,?,?,?,?)",
[Id, "徳川","綱吉",'5代目', 'a']);
});
});
res.send('end');
});
/tranCommitを実行すると、それぞれの物理ファイルに正しくレコードが追加されます。
/tranRollbackを実行すると、member2 のインサート文でエラーが発生し、memberにレコードは追加されませんでした。