锁定MySQL中的多行(InnoDB)

cgw*_*cts 4 mysql sql innodb

要在MySQL中锁定两行,我应该使用:

SELECT * FROM <table> WHERE id=? OR id=? FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT * FROM <table> WHERE id=? AND id=? FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)

我显然是在交易中,只是不确定它是否应该ANDOR

jle*_*ahy 7

如果您的WHERE子句不是id=1 AND id=2任何行都没有资格包含在结果集中,因此不会锁定任何行.

要锁定您需要使用的id=1 OR id=2两个行,这样两行都将包含在结果集中并将被锁定.