所以我正在研究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 的所有行,然后在三个查询后释放它们。我想确保在任何其他连接对这些行具有写入能力之前执行这三个查询。
最佳答案
使用事务,在您明确提交之前,您的更改对其他人不可见。
关于php - 锁定 innoDB 中的行以进行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10000459/