Node操作Firebird 互动版

transaction

数据库对象还为我们提供了一个事务处理的方法db.transaction(),来创建一个事务。语法格式如下:

db.transaction(isolation, function(err, transaction))

其中isolationTransaction的类型,它包括以下几种类型:

  • FireBird.ISOLATION_READ_UNCOMMITTED
  • FireBird.ISOLATION_READ_COMMITED
  • FireBird.ISOLATION_REPEATABLE_READ
  • FireBird.ISOLATION_SERIALIZABLE
  • FireBird.ISOLATION_READ_COMMITED_READ_ONLY

function为回调方法,其中的参数transaction对象又有以下四个方法:

  • transaction.query(query, [params], function(err, result))
  • transaction.execute(query, [params], function(err, result))
  • transaction.commit(function(err))
  • transaction.rollback(function(err))

transaction.query()transaction.execute()的用法与前面课程中db.query()db.execute()的用法相同。而transaction.commit()为提交事务,transaction.rollback()为事务回滚。

如下实例:

FireBird.attach(options, function(err, db) {
    if (err)
        throw err;
    db.transaction(FireBird.ISOLATION_READ_COMMITED, function(err, transaction) {
        transaction.query('INSERT INTO A (ID,NAME) VALUES(?,?)', [1, 'Janko'], function(err, result) {
            if (err) {
                transaction.rollback(); //事务回滚
                return;
            }
            transaction.commit(function(err) {  //提交事务
                if (err)
                    transaction.rollback();
                else
                    db.detach();
            });
        });
    });
});