https://blog.csdn.net/yzx3105/article/details/129728659
查询的记录存在:在用「唯一索引进行等值查询」时,next-key lock 会退化成「记录锁」
查询的记录不存在:在用「唯一索引进行等值查询」时,next-key lock 会退化成「间隙锁」
唯一索引等值查询:记录存在,临键锁退为行锁
事务A加锁变化过程:
1.查询 id=8的数据,加锁的基本单位是 next-key lock,因此事务A的加锁范围是 id (5, 8];
2.唯一索引(包括主键索引) 进行等值查询,且查询的记录存在,所以next-key lock 退化成记录锁,最终加锁的范围就是 id = 8 这一行。
结论:
由于id=8退化为行锁,因此事务B修改 id=8的这条记录失败,而事务C插入id=6能够成功