Opérations de transaction (Query Builder 16)
Le moyen le plus simple est d'utiliser la méthode de transaction pour effectuer les transactions de la base de données. Lorsqu'une exception se produit dans le code lors de la fermeture, elle sera automatiquement annulée, par exemple :
Db::transaction(function () { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); });
Vous pouvez également contrôler manuellement la transaction, par exemple. :
// 启动事务 Db::startTrans(); try { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); }
Faites attention à l'opération de transaction, assurez-vous que votre connexion à la base de données utilise la même.
peut prendre en charge la transaction XA de MySQL pour implémenter des transactions globales (distribuées). Vous pouvez utiliser :
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')]);
Assurez-vous que votre moteur de table de données est InnoDB et activez la prise en charge des transactions XA.