$transaction=Yii::app()->db->beginTransaction(); try{ $model1->save(); $model2->save(); $model3->save(); $model4->save(); $model5->save(); //出错 $model6->save(); $transaction->commit(); } catch(Exception $e){ $transaction->rollBack(); }
model1 , model2 , model3 , model4 , model5 照样存储成功!
如果在$model6->save()可能是因为某种原因没能成功插入或更新数据,这时候会返回false,但不会有异常抛出来驱动事物回滚。你应该判断如果save时返回了false,即没有插入或更新成功,应该手动抛出Exception,这样在捕获Exception后可以rollback。
先检查你的表引擎是否是innodb类型的,www.phpernote.com 提供技术支持。