Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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
Php 在innoDB中锁定多个查询的行_Php_Mysql_Sql - Fatal编程技术网

Php 在innoDB中锁定多个查询的行

Php 在innoDB中锁定多个查询的行,php,mysql,sql,Php,Mysql,Sql,所以我在看innoDB的行锁定,它看起来像是SELECT…for UPDATE是锁定的转到查询。在我的文件中,我有三个查询。两次更新,然后一次插入。有没有办法确保每个连接的行都被锁定,然后在其他人更改行之前可以运行这三个查询 以下是查询: "UPDATE table SET r=r+2 WHERE r > '$l' AND home='$home'"; "UPDATE table SET l=l+2 WHERE l > '$l' AND home='$home'"; "INSER

所以我在看innoDB的行锁定,它看起来像是
SELECT…for UPDATE
是锁定的转到查询。在我的文件中,我有三个查询。两次更新,然后一次插入。有没有办法确保每个连接的行都被锁定,然后在其他人更改行之前可以运行这三个查询

以下是查询:

"UPDATE table SET r=r+2 WHERE r > '$l' AND home='$home'";

"UPDATE table SET l=l+2 WHERE l > '$l' AND home='$home'";

"INSERT INTO table (value, home, l, r, value2)
            VALUES ('$value', '$home', '$l'+1, '$l'+2, value2) ";

澄清一下:我想锁定home=$home的所有行,然后在三个查询之后释放它们。我想确保在任何其他连接对这些行具有写入功能之前执行这三个查询。

使用事务,在明确提交更改之前,您的更改对其他人不可见


更多信息:

您无法锁定不存在的行。因此,无法锁定所有“三”行。你只能锁定你
更新的两行
@a_horse_,没有名字是的,我想我是这样说的。我的意思是锁定home=$home的所有行,然后在完成三个查询后释放它们。因此,如果有类似于
锁定直到空闲
的情况,然后在查询
空闲
之后,更新的行将被锁定,直到提交。因此,如果更新是你要做的第一件事,那就是你所需要的。