是否"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 的上下文中看到过这一点。
请参阅此 MySQL 文档页面。它说:
锁定读取、UPDATE 或 DELETE 通常会在 SQL 语句处理过程中扫描的每个索引记录上设置记录锁。语句中是否存在将排除该行的 WHERE 条件并不重要。
和:
对于 SELECT ... FOR UPDATE 或 SELECT ... LOCK IN SHARE MODE,为扫描的行获取锁,并为不符合包含在结果集中的行(例如,如果它们不满足WHERE 子句中给出的标准)。但是,在某些情况下,可能不会立即解锁行,因为结果行与其原始源之间的关系在查询执行期间丢失。
“扫描行”是指连接中使用的任何表中的行。
SELECT ... FOR UPDATE 锁定行和任何关联的索引条目,就像您为这些行发出 UPDATE 语句一样。
接着
如果启用了自动提交,则匹配规范的行不会被锁定。
这个mySQL 文档没有提供答案吗?