トランザクション操作 (クエリ ビルダー 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 トランザクションのサポートを有効にしてください。