Heim  >  Artikel  >  PHP-Framework  >  Transaktionsvorgänge in ThinkPHP5

Transaktionsvorgänge in ThinkPHP5

silencement
silencementnach vorne
2020-01-30 22:49:414657Durchsuche

Transaktionsvorgänge in ThinkPHP5

Wenn Sie die Transaktionsverarbeitung verwenden, muss die Datenbank-Engine die Transaktionsverarbeitung unterstützen. Beispielsweise unterstützt MyISAM von MySQL keine Transaktionsverarbeitung und erfordert die Verwendung der InnoDB-Engine.

ThinkPHP5.0

Verwenden Sie die Transaktionsmethode, um Datenbanktransaktionen durchzuführen. Wenn eine Ausnahme auftritt, wird sie automatisch zurückgesetzt, zum Beispiel:

Transaktionen automatisch steuern.

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

kann Transaktionen 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();}

ThinkPHP5.1

Der einfachste Weg besteht darin, die Transaktionsmethode zum Betrieb zu verwenden Datenbanktransaktionen. Wenn der Code in der Schließung Eine Ausnahme wird 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 dies während Transaktionsvorgängen Stellen Sie sicher, dass Sie dieselbe Datenbankverbindung verwenden.

Ab V5.1.13+ kann die XA-Transaktion von MySQL unterstützt werden, 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 XA Transaktionsunterstützung.

Das obige ist der detaillierte Inhalt vonTransaktionsvorgänge in ThinkPHP5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:www.liqingbo.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen