ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP5 でのトランザクション操作

ThinkPHP5 でのトランザクション操作

silencement
silencement転載
2020-01-30 22:49:414793ブラウズ

ThinkPHP5 でのトランザクション操作

トランザクション処理を使用する場合、データベース エンジンはトランザクション処理をサポートする必要があります。たとえば、MySQL の MyISAM はトランザクション処理をサポートしていないため、InnoDB エンジンを使用する必要があります。

ThinkPHP5.0

トランザクション メソッドを使用してデータベース トランザクションを操作します。例外が発生すると、自動的にロールバックされます。例:

トランザクションを自動的に制御する処理

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

ThinkPHP5.1

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

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

トランザクション中は次の点に注意してください。操作を行う場合は、データベース接続が同じ接続を使用していることを確認してください。

V5.1.13 以降、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 トランザクションを有効にするサポート。

以上がThinkPHP5 でのトランザクション操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はwww.liqingbo.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。