mysql select for update:未锁定以供读取
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql select for update:未锁定以供读取相关的知识,希望对你有一定的参考价值。
打开2个mysql命令行控制台,并设置autocommit = 0。
console 1 (T1): select * from Employee where id=1 for update;
console 2 (T2): select * from Employee where id=1;
the result displayed. // should be locked
尝试选择员工时应锁定T2。对?它是选择更新。
console 2 (T2): update Employee set name ="FOO" where id=1;
locked as expected
答案
不,您需要使用“LOCK IN SHARE MODE”显式锁定读取查询。
否则,读取不会在单独的连接中自动锁定在MySQL中。有关更多信息,请参阅
https://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html
在本文档中,他们提供了一个可以强制锁定的示例 - 它不是默认锁定。
以上是关于mysql select for update:未锁定以供读取的主要内容,如果未能解决你的问题,请参考以下文章
mysql事务,select for update,及数据的一致性处理
mysql事务,select for update,及数据的一致性处理
[MySQL] 行级锁SELECT ... LOCK IN SHARE MODE 和 SELECT ... FOR UPDATE