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.FOR UPDATE究竟起啥作用

[MySQL] 行级锁SELECT ... LOCK IN SHARE MODE 和 SELECT ... FOR UPDATE

数据库:Mysql中“select ... for update”排他锁分析

mysql事务和锁 SELECT FOR UPDATE