質問: update_hogehoge(); // エラー起こしてないか確認 if( is_wp_error( $result ) ){ $wpdb->query('ROLLBACK'); // Rollback // 必要があればエラー処理 return; } $wpdb->query('COMMIT'); // Commit }catch( Exception $e ){ $wpdb->query('ROLLBACK'); // Rollback // エラー処理をもごもご }finally{ // テーブルのロックを解除 $wpdb->query('UNLOCK TABLES'); } } ``` ### 確認事項1 > > まずfinaryが実行される > > > という理解は、このページによるものです。 https://qiita.com/eijenson/items/7e9e112e69b37f72353c この理解は間違っているでしょうか? ### 確認事項2 > > アンロックしてしまってはロールバックは効かないはず > > > という理解は、以下コードが「//失敗」と「//成功」になったからです。 確認事項1が正しければ、hogehoge()ではfinaryにあるアンロックがまず処理されます。 それは以下「//失敗」の順序と同じはずです。しかしこれは失敗してしまいました。 逆にアンロックを後に処理した「//成功」が成功したので、こう理解しています。 この理解は間違っているでしょうか? ``` //失敗 global $wpdb; if( $flag_rollback ){ $wpdb->query('UNLOCK TABLES'); $wpdb->query('ROLLBACK'); }else{ $wpdb->query('COMMIT'); $wpdb->query('UNLOCK TABLES'); } //成功 global $wpdb; if( $flag_rollback ){ $wpdb->query('ROLLBACK'); }else{ $wpdb->query('COMMIT'); } $wpdb->query('UNLOCK TABLES'); ``` ### ツールのバージョン バージョンが関係あるかわかりませんが、WordPressは5.4で、PHPは7.3.0になります。
回答: 何を確認したいのか、何が確認できたのかよくわかっていませんが、理解できていない機能 2 種類を同時に検証せず、一つづつ検証してみては?