2つの列を持つテーブルがあるとします。 1つはid
と呼ばれ、これがその主キーです。もう1つはvalue
です。この表には以下の10行があります。更新の開始行と終了行を選択すると、mysqlは一連の行をロックしますか?
1 'A'
2 'B'
3 'C'
4 'D'
5 'E'
6 'F'
7 'G'
8 'H'
9 'I'
10 'J'
それから私は、私はこの後どうなるかを知りたいこのSELECT * FROM table WHERE id IN (1, 10) FOR UPDATE;
ようなクエリを適用します。私は一度それがロックするすべての10行ロックからそれを読んで覚えています。しかし、私はこれを繰り返すことはできません。この問題は実際に存在しますか?それとも私は忘れてしまっただけです。
いつものように、マニュアルへの簡単な見方は、https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.htmlに役立ちます。アドバイスとして、ブロガーに頼らないでください。彼らの中には、本当に深く研究された話題ではなく、名声を得るために出版しているものもあります。私は間違いや古い情報をブログで比較的頻繁に発見しました。一方、マニュアルは間違っていることはめったにありません。 – fancyPants