親父プログラマーの呟き

WXY

WordPress

[WordPress]トランザクション制御・COMMIT/ROLLBACK

投稿日:

トランザクション制御

MySQL的には、BIGINを発行して、COMMIT/ROLLBACKを発行することでトランザクション制御が可能。

WordPressでは

function hoge(){

  global $wpdb;

  // トランザクションを開始
  $wpdb->query("START TRANSACTION");

  $result = fuga();

  if($result['status'] == 'OK'){
    $wpdb->query("COMMIT");
  }else{
    $wpdb->query("ROLLBACK");
  }
}

 

ROLLBACKが効かない、ROLLBACKしない

"START TRANSACTION" して "ROLLBACK" してもロールバックせずに、ハマってしまったので記録しておきます。

ポイントはテーブルの「Storage Engines」でした。

MySQL 第 15 章 代替ストレージエンジン

トランザクション制御を有効にするには「InnoDB」 でなければならい。ハマった私の環境では「MyISAM」。。

トランザクション制御に関係するテーブルの「Storage Engines」を「InnoDB」に変更することで、トランザクション制御が出来るようになり、ロールバックが実行された。

Storage EnginesをInnoDBに変更する方法

phpMyAdmin

テーブル → 操作 → テーブルオプション

コマンドライン

mysql> ALTER TABLE [テーブル名] ENGINE InnoDB; 

-WordPress

Copyright© WXY , 2021 All Rights Reserved Powered by STINGER.