最近有用 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(); //如果操作失败, 数据回滚
}