给你一条SQL语句:
update student set name = '张三' where age = 12
面试官:加的锁是什么?
答:首先假设现在隔离级别是RR可重复读,然后谈加的什么锁
(1)情况1:age没有加索引,加的是表锁
(2)情况2:age加了普通索引。如果age有等于12的人,那么就在索引上加锁,加的是间隙锁 + 记录锁。不仅锁住现有age = 12的人,还要锁住间隙age = 12,防止新数据插入。如果age没有等于12的人,只加间隙锁
(3)情况3:age加了唯一索引,和情况2很像,但是最多锁一条记录