Допустим, у нас есть 2 транзакции.
транзакция 1:
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from user where id = 200 for update; // sql1
Empty set (0.00 sec)
, затем начните транзакцию 2:
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from user where id = 200 for update; // sql2
Empty set (0.00 sec)
mysql> update user set name='' where id = 200; // sql3
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
mysql> insert into user values(200,''); // sql4
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
Уровень изоляции обеих транзакций - REPEATABLE-READ
- что будет заблокировано sql1 или sql2?X замок или S замок?X-блокировка или S-блокировка какого ряда?