创建对具有特定值的行的插入/更新的锁定

时间:2018-07-02 22:08:49

标签: mysql locking

在InnoDB中的MySQL事务中,以SELECT ... FOR UPDATE模式在REPEATABLE READ查询上创建间隙锁。

因此,如果事务T1运行查询SELECT * FROM `inventory` WHERE `price`=45545 FOR UPDATE;,然后T2运行UPDATE `inventory` SET `color`=3 WHERE `price`=45545;,则由于间隙锁定,T2停顿直到T1完成。此行为很有用,因为T1保持不变,即它对所有具有`price`=45545的行都具有排他锁。

但是,当没有以`price`=45545开始的行时,情况似乎并非如此。在这种情况下,不会创建间隙锁定,并且T2成功运行,从而打破了不变性。

即使没有行匹配,有没有办法强迫MySQL进行间隙锁定?

0 个答案:

没有答案