Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql “for update”行阻塞是否也适用于联接表?_Mysql_Sql_Select_Sql Update - Fatal编程技术网

Mysql “for update”行阻塞是否也适用于联接表?

Mysql “for update”行阻塞是否也适用于联接表?,mysql,sql,select,sql-update,Mysql,Sql,Select,Sql Update,我在一个事务中进行了两个查询:selectcontainingjoin子句和UPDATE。在更新完成之前,所选行中的数据必须保持不变,所以我使用FOR update子句。我的问题是:“for update”是否仅适用于从from子句中指定的表中选择的部分数据,还是也适用于连接表中的数据?我的数据库管理系统是MySql。简单地说,锁位于读取的行上,不包括联接表,因此它应该位于所有联接表上的所有记录上。如果只想锁定其中一个表中的行,可以单独锁定:“从keytable中选择1,其中。。。用于更新' 也

我在一个事务中进行了两个查询:selectcontainingjoin子句和UPDATE。在更新完成之前,所选行中的数据必须保持不变,所以我使用FOR update子句。我的问题是:“for update”是否仅适用于从from子句中指定的表中选择的部分数据,还是也适用于连接表中的数据?我的数据库管理系统是MySql。

简单地说,锁位于读取的行上,不包括联接表,因此它应该位于所有联接表上的所有记录上。如果只想锁定其中一个表中的行,可以单独锁定:“从keytable中选择1,其中。。。用于更新'


也就是说,不需要简单地阻止SELECT和update之间的更新。SELECT上的读取锁定已执行此操作。FOR UPDATE的目的是防止另一个事务读取行,从而可能导致死锁,因为在另一个事务释放其读取锁之前,无法应用更新。

也就是说,不需要简单地阻止SELECT和UPDATE之间的更新。SELECT上的读取锁定已经做到了这一点,我认为这不是真的。只有当你选择了。。。锁定共享模式