回答編集履歴

1

二つ目の疑問を追加

2020/05/31 06:26

投稿

yakan
yakan

スコア19

test CHANGED
@@ -84,10 +84,32 @@
84
84
 
85
85
 
86
86
 
87
- ###残った疑問
87
+ ###残った疑問1
88
88
 
89
89
  **補足**にある「>`START TRANSACTION`だけ実行してやればCOMMIT文の実行までコミットされず」が正しいならば、**問題の原因**にあるコードでもコミットされないはずで、問題は発生しないはずで、**解決方法**のように`autocommit=0`を指定する必要はないはず。
90
90
 
91
91
 
92
92
 
93
93
  それがなぜ`LOCK TABLES`する場合には`autocommit=0`を指定しなければならなくなるのかが疑問。
94
+
95
+
96
+
97
+ ###残った疑問2
98
+
99
+ さらに解決方法でautocommit=0とした直後に、autocommitを確認するとなぜか1になってるという点も疑問…
100
+
101
+ ```php
102
+
103
+ // 解決方法
104
+
105
+ $wpdb->query('SET autocommit=0');
106
+
107
+ $wpdb->query("LOCK TABLES wp_mains WRITE, wp_sub1s WRITE");
108
+
109
+
110
+
111
+ // autocommit を確認
112
+
113
+ $result['check_autocommit'] = $wpdb->query("SELECT @@autocommit"); // なぜか1になってる
114
+
115
+ ```