transaction
数据库对象还为我们提供了一个事务处理的方法db.transaction(),来创建一个事务。语法格式如下:
db.transaction(isolation, function(err, transaction))
其中isolation为Transaction的类型,它包括以下几种类型:
- 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();
});
});
});
});