MySQL のコミットとトランザクションについて質問があります。MySQL クエリを実行する PHP ステートメントがいくつかあります。次のことを言うだけですか?
mysql_query("START TRANSACTION");
//more queries here
mysql_query("COMMIT");
これは正確に何をしますか?それはどのように役立ちますか?更新、削除、挿入については、これが他のクエリの読み取りをブロックすることもわかりました。
mysql_query("LOCK TABLES t1 WRITE, t2 WRITE");
//more queries here
mysql_query("UNLOCK TABLES t1, t2");
これは、性質に関係なく他のクエリをブロックするか、書き込み/選択のみをブロックしますか?
別の質問: 1 つのクエリが実行中で、他のクエリがブロックされているとします。別のクエリがブロックされたデータにアクセスしようとしますが、ブロックされていることがわかります。それはどのように進行しますか?データが再びブロック解除されるまで待って、クエリを再実行しますか? 失敗するだけで、繰り返す必要がありますか?もしそうなら、どうすれば確認できますか?
どうもありがとう!
デニス