Yii 框架事务处理

最近有用 Yii + SQLite 进行一个应用的开发,但在插入大量数据的时候非常缓慢。究其原因,大约就是在每插入一个数据的时候就会有一次 IO 的操作,所以在这个时候引入事务处理就很有必要了,而且也可以保证数据的一致性。

那么,如何在 Yii 应用中引入事务处理呢?

$transaction = Yii::app()->db->beginTransaction(); //创建事务

// 将需要事务处理的操作放进try里
try {
     $a = XXX::model()->findByPk(X);
     $a->x = 1;
     $a->update();
     $b = YYY::model()->findByPk(Y);
     $b->y = 2;
     $b->update();

     $transaction->commit(); //提交事务会真正的执行数据库操作
} catch (Exception $e) {
     $transaction->rollback(); //如果操作失败, 数据回滚
}