lock in share mode でも、for update でも、後発の select に対して lock はかからない。
insert はブロックされる。
mysql> begin; Query OK, 0 rows affected (0.00 sec) -- for update でも同じ mysql> select * from Users where userId="GYA" lock in share mode; Empty set (0.00 sec)
その後 別セッション で
mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> select * from Users where userId="GYA" lock in share mode; Empty set (0.00 sec) mysql> select * from Users where userId="GYA" for update; Empty set (0.00 sec) -- これはブロックされる mysql> insert into Users (userId) values ("GYA"); ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction