mysql-record多条件查询锁

yrwegjxp  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(278)

引擎:在本例中,innodb company\u id是主键。当我运行以下sql时,它只锁定选定的行:

select * from company where company_id = 1 for update

=>锁定一行

select * from company where company_id in (1, 2) for update

=>锁定2行
但是当条件数增加到5时,sql看起来像这样,将锁定整个表:

SELECT
    * 
FROM
    company 
WHERE
    company_id = 1 
    OR company_id = 2 
    OR company_id = 3 
    OR company_id = 4 
    OR company_id = 5
FOR UPDATE

=>表已锁定

SELECT
    * 
FROM
    company 
WHERE
    company_id IN (1, 2, 3, 4, 5)
FOR UPDATE

=>表已锁定
是否有任何方法可以只使用一个查询(使用多个条件)锁定多个记录?
======================问题已解决==============================
很抱歉,我在第一次编辑问题时错过了“更新”。

qoefvg9y

qoefvg9y1#

我不认为select命令会锁定您选择的行。根据文件https://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html,您应该使用选择。。。更新以锁定行。

相关问题