leonyl
楼主,解决了吗?我遇到同样的问题了,用嵌套事务也是有问题
http://www.cnblogs.com/xweiwei/archive/2012/11/21/2780497.html
4.使用事务 用这个方法正常,数据库可以回滚。========================================================
第三次更新
如图
还用原来的代码 我第三步手动抛出异常,不回滚的情况下按理说第一二步都会提交执行sql,但出现的问题是 只第一步update sql提交执行了 第二步的批量插入没有执行,说明第二步的回滚了吧用这种执行sql方式,手动抛出异常事务是可以回滚的。
- leonyl 回复了 johnny1991 的回答
$transaction = Yii::$app->db->beginTransaction(); try{ xxxx }catch (Exception $e) { $transaction->rollBack(); throw $e; } $transaction->commit(); return true;
@johnny1991 没有 没有,只有一个事务。。。
现在发现的问题是,如果在操作第二张表的时候,插入的某字段数据库没有的话,这时候sql是没提交执行的,也就是说这样是预期的那样。如果是手动抛出的异常,代码可以走到catch里面,但是第一步操作的表里的数据变了。 - leonyl 回复了 johnny1991 的回答
$transaction = Yii::$app->db->beginTransaction(); try{ xxxx }catch (Exception $e) { $transaction->rollBack(); throw $e; } $transaction->commit(); return true;
@johnny1991 恩恩 我在回滚那的errorData()封装的有exit();