"SELECT ... FOR UPDATE"
在MySQL中是否锁定了连接的行?
如果是这样,是否有可能禁用此行为?
文档中没有关于此的说明。我看到Oracle支持"SELECT ... FOR UPDATE OF table_name"
,其中table_name是主表或其中一个连接表,将锁定受影响的行,但是我从未在MySQL上看到过这种情况。
"SELECT ... FOR UPDATE"
在MySQL中是否锁定了连接的行?
如果是这样,是否有可能禁用此行为?
文档中没有关于此的说明。我看到Oracle支持"SELECT ... FOR UPDATE OF table_name"
,其中table_name是主表或其中一个连接表,将锁定受影响的行,但是我从未在MySQL上看到过这种情况。
并且:在进行锁定读取、更新或删除时,通常会对处理SQL语句中扫描到的每个索引记录设置记录锁,无论语句中是否有WHERE条件与该行不符。
这里的“扫描到的行”指的是使用连接中的任何表中的行。对于SELECT ... FOR UPDATE或SELECT ... LOCK IN SHARE MODE,将为扫描到的行获取锁,并且预计将释放不符合结果集条件(例如,不满足WHERE子句中给定的条件)的行的锁。但是,在某些情况下,可能不会立即解锁行,因为查询执行过程中会丢失结果行与原始来源之间的关系。