yii2.0如何实现跨数据库的事务操作,比如有五个数据库的五张不同库的表同时插入数据,需要使用事务 [ 新手入门 ]
以下是一个使用 Yii2.0 实现跨多个数据库的事务的示例代码:
use Yii;
use yii\db\Connection;
use yii\db\Exception;
use yii\db\Transaction;
// 假设我们有五个数据库
$db1 = Yii::$app->db1;
$db2 = Yii::$app->db2;
$db3 = Yii::$app->db3;
$db4 = Yii::$app->db4;
$db5 = Yii::$app->db5;
// 创建事务
$transaction = Yii::$app->db->beginTransaction();
try {
    // 开始事务
    $db1Transaction = $db1->beginTransaction();
    $db2Transaction = $db2->beginTransaction();
    $db3Transaction = $db3->beginTransaction();
    $db4Transaction = $db4->beginTransaction();
    $db5Transaction = $db5->beginTransaction();
    // 执行操作
    $db1->createCommand('INSERT INTO table1 (column1) VALUES (:value)', [':value' => 'value1'])->execute();
    $db2->createCommand('INSERT INTO table2 (column2) VALUES (:value)', [':value' => 'value2'])->execute();
    $db3->createCommand('INSERT INTO table3 (column3) VALUES (:value)', [':value' => 'value3'])->execute();
    $db4->createCommand('INSERT INTO table4 (column4) VALUES (:value)', [':value' => 'value4'])->execute();
    $db5->createCommand('INSERT INTO table5 (column5) VALUES (:value)', [':value' => 'value5'])->execute();
    // 提交事务
    $db1Transaction->commit();
    $db2Transaction->commit();
    $db3Transaction->commit();
    $db4Transaction->commit();
    $db5Transaction->commit();
    // 提交总事务
    $transaction->commit();
} catch (Exception $e) {
    // 回滚所有事务
    $db1Transaction->rollBack();
    $db2Transaction->rollBack();
    $db3Transaction->rollBack();
    $db4Transaction->rollBack();
    $db5Transaction->rollBack();
    $transaction->rollBack();
}
共 0 条回复
没有找到数据。
PHP学院的中学生
            注册时间:2018-10-23
最后登录:2025-08-09
在线时长:169小时54分
    最后登录:2025-08-09
在线时长:169小时54分
- 粉丝29
 - 金钱4835
 - 威望30
 - 积分6825