首先,为了说明白这个问题,我们先建一个表。
create table t(
id int NOT NULL,
c int DEFAULT NULL,
d int DEFAULT NULL,
primary key (id),
key c(c)
)engine=innoDB;
insert into t values(0,0,0),(5,5,5),(10,10,10),(15,15,15),(20,20,20),(25,25,25);
现在我们执行这样一行语句。
select * from t where d = 5 for update;
我们很容易得到,由于字段d上没有加上索引,那么这条语句就会使用全表扫描,然后就会锁住主键为5的这一行,那么其他的行会不会锁住呢?
什么是幻读
我们举个例子(和实际发生的不一样)
sessionA | sessionB | sessionC | |
---|---|---|---|
T1 | begin: | ||
T2 |
select * from t where d =5 for update; result :(5,5,5) |
||
T3 | update t set d =5 where id =0; | ||
T4 |
版权声明:本文为qq_41911213原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。