select for update sql为:
select * from t where a= 5 for update;
提示:注意id=5的行已经存在了。
下面你画一下时序图吧
嗯嗯,时序图加锁情况如下:
嗯,那如果我们需要执行的sql如下:
select * from t where b = 3 for update;注意b并不是唯一键,它只是一个普通索引哦!
你能画一下它的加锁时序图吗?
嗯嗯,时序图如下:
(最后一条Sql条件是 where a = 5,不是a=3)
还是使用这些数据
create table t(a int,b int,primary key(a),key(b));insert into t select 1,1;insert into t select 3,1;insert into t select 5,3;insert into t select 7,6;insert into t select 10,8;
假如我执行的sql是:
select * from t where a = 13 for update;
注意:
1、a=13的行并不存在哦!
2、a是唯一索引
你画一下它的时序图吧!
嗯呢,时序图如下: