Java
Node.js
AS400
IBMi
node-jt400

node-jt400を試してみた(Transactions)

More than 1 year has passed since last update.

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にレコードは追加されませんでした。