ASi

存在しない unique key に対する select の lock

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