Yii2.0 操作事务多个数据库 [ 2.0 版本 ]
我现在是这样的,项目有很多的数据库,都是在同一个mysql服务器下的,在main.php里面有db,db2,db3
现在是这样的有个入库操作,A表来自于db2,B表来自于db3,在使用事务的时候是这句:
$transaction = \Yii::$app->get('db2')->beginTransaction();
我不清楚到底写get('db2')还是get('db3')还是随便都可以??
共 3 个回答
-
$transaction = Yii::$app->db->beginTransaction();
db可以换成你的配置共 3 条回复 -
事务支持嵌套: https://www.yiiframework.com/doc/guide/2.0/en/db-dao#nesting-transactions
如果先写入 A 表,就把 B 表的写入操作事务代码嵌套在 A 表的事务内。我还没遇到过你说的类似场景,你可以试一下。
-
johnny1991 回答于 2018-11-06 14:15 举报
$t1 = Yii::$app->db1->beginTransaction(); $t2 = Yii::$app->db2->beginTransaction(); try { if(update a failed) { throw new Exception('update a failed'); } if(update b failed) { throw new Exception('update b failed'); } $t1.commit(); $t2.commit(); } cacth(Exception $e) { $t1.rollback(); $t2.rollback(); }
xyf90314
注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
最后登录:2023-03-13
在线时长:95小时23分
- 粉丝21
- 金钱5257
- 威望40
- 积分6607