プロが教えるわが家の防犯対策術!

mysql> CREATE TABLE tbl_lock (val1 INT PRIMARY KEY, val2 VARCHAR(8));

mysql> INSERT INTO tbl_lock VALUES
-> (10, "a"), (20, "b"), (30, "c"), (40, "d"), (50, "e"), (60, "f");

tx1> SELECT * FROM tbl_lock WHERE val1 = 20 FOR UPDATE;

別のトランザクションから更新を試みる

tx2>UPDATE tbl_lock SET val2 = "bbb" WHERE val1 = 20;

とした場合、対象レコードがロックされているため、ロック解除待ちがタイムアウトとなるため
ERRORにならなければ行かないのですが、なぜか書き変わってしまいます。
何故なんでしょうか?

因みに、MySQLのヴァージョンは、5.7.29 です。

A 回答 (1件)

トランザクション処理をいれてないからじゃない?

    • good
    • 0
この回答へのお礼

tx1>の意味は、トランザクションを開始するという意味なのですね。
基本的なことが理解できていませんでした。
どうもありがとう御座いました。

お礼日時:2020/12/28 22:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!