トランザクション操作 (クエリ ビルダー 16)


最も簡単な方法は、トランザクション メソッドを使用してデータベース トランザクションを操作することです。クロージャ内のコードで例外が発生すると、自動的にロールバックされます。例:

Db::transaction(function () {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
});

トランザクションを手動で制御することもできます。例:

// 启动事务
Db::startTrans();
try {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();
} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();
}

トランザクション操作中は、データベース接続が同じ接続を使用していることを確認してください。

MySQL の XA トランザクションをサポートしてグローバル (分散) トランザクションを実装できます:

Db::transactionXa(function () {
    Db::connect('db1')->table('think_user')->delete(1);
    Db::connect('db2')->table('think_user')->delete(1);
}, [Db::connect('db1'),Db::connect('db2')]);

データ テーブル エンジンが InnoDB であることを確認し、XA トランザクションのサポートを有効にしてください。