允许冲突间隙锁的原因是,如果从索引中清除记录,则必须合并不同事务在记录上持有的间隙锁。
InnoDB间隙锁定是"纯粹的抑制性",这意味着它们的唯一目的是防止其他事务插入到间隙中....* from user where value > 17 and value < 30 for update;
对于这条sql, 查询是从42开始, 也是42结束, 且区间内不存在记录, 所以加锁为...17 and value < 42 for update;
对于这条sql, 查询是从42开始, 也是42结束, 且区间内不存在记录, 所以加锁与b)一致
e) 左右都是闭区间, 且左右范围不存在记录...17 and value <= 30 for update;
对于这条sql, 查询是从17开始, 到42结束, 且区间内存在记录, 所以加锁与a)一致
g) 左右都是闭区间, 右范围存在记录
start..., 从符合条件的52开始加N-K锁, 加锁到60结束, 同时对id=880的主键索引记录加锁
b) 左闭右开, 左范围存在记录
start transaction;
select * from user