0

所以我正在研究 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 的所有行,然后在三个查询后释放它们。我想确保在任何其他连接可以对这些行具有写入能力之前执行三个查询。

4

1 回答 1

1

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

更多信息:关于事务的 msql 文档

于 2012-04-03T20:16:18.467 回答