Transaktionsoperationen (Query Builder 16)
Der einfachste Weg besteht darin, die Transaktionsmethode zum Ausführen von Datenbanktransaktionen zu verwenden. Wenn im Code im Abschluss eine Ausnahme auftritt, wird diese automatisch zurückgesetzt, zum Beispiel:
Db::transaction(function () { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); });
Sie können die Transaktion auch manuell steuern, zum Beispiel:
// 启动事务 Db::startTrans(); try { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); }
Beachten Sie, dass Sie bei Transaktionsvorgängen sicherstellen, dass Ihre Datenbankverbindung dieselbe Verbindung verwendet.
Kann die XA-Transaktion von MySQL unterstützen, um globale (verteilte) Transaktionen zu implementieren. Sie können Folgendes verwenden:
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')]);
Stellen Sie sicher, dass Ihre Datentabellen-Engine InnoDB ist, und aktivieren Sie die XA-Transaktionsunterstützung.