在MySQL中锁定两行,我应该使用哪个命令: SELECT * FROM <table> WHERE id=? OR id=? FOR UPDATE; 或者: SELECT * FROM <table> WHERE id=? AND id=? FOR UPDATE; 我显然正在事务内,只是不确定它应该是AND还是OR?
我认为这并不重要。根据手册,锁定只会针对“符合结果集条件”的行进行。 对于SELECT ... FOR UPDATE,将锁定扫描的行,并预计会释放未符合结果集条件的行的锁定(例如,如果它们不符合WHERE子句中给定的条件)。 更新 您可以使用SHOW ENGINE INNODB STATUS来检查每种类型的SELECT所锁定的行。 您可以在此阅读和阅读更多关于读取锁定的信息。