gpt4 book ai didi

mysql - 'for update' 行阻塞是否也适用于连接表?

转载 作者:可可西里 更新时间:2023-11-01 06:30:35 25 4
gpt4 key购买 nike

我在事务中进行了 2 个查询:SELECT(包含 JOIN 子句)和 UPDATE。要求选定行中的数据在更新完成之前不要更改,因此我使用 FOR UPDATE 子句。我的问题是:'for update' 是否仅适用于从 FROM 子句中指定的表中选择的部分数据,或者也适用于连接表中的数据?我的数据库管理系统是 MySql。

最佳答案

documentation简单地说锁是在读取的行上,除了连接表,所以它应该在所有连接表上的所有记录上。如果您只想锁定其中一个表中的行,您可以单独执行此操作:“SELECT 1 FROM keytable WHERE ... FOR UPDATE”。

也就是说,这并不是简单地阻止 SELECT 和 UPDATE 之间的更新所必需的。 SELECT 上的读锁已经做到了这一点。 FOR UPDATE 的目的是防止另一个事务读取行并因此可能导致死锁,因为在另一个事务释放其读锁之前无法应用 UPDATE。

关于mysql - 'for update' 行阻塞是否也适用于连接表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com