php - 锁定 innoDB 中的行以进行多个查询

标签 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'";

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

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

最佳答案

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

更多信息:msql docs on transactions

关于php - 锁定 innoDB 中的行以进行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10000459/

相关文章:

php - fetch() 方法出错

mysql - 根据MySQL中之前的记录更新时间

iphone - 从 iPhone 应用程序远程访问 SQL 数据库

sql - 如何在 postgres 中按排序顺序简洁地显示表列列表?

python - 使用变量 python 从 mysql 读取/存储

php - 当使用 PHP 查询我的 MySQL 数据库时,如何解决这个 undefined index 错误?

php - Laravel 中正则表达式规则的自定义验证消息?

php - Joomla 模块 “know” 可以在什么位置? (2)

mysql - 如何将 DBIx::Simple + SQL::Abstract 与 DBIx::Connector 结合使用

MYSQL - 显示总工作时间的总和,但只显示最后更新日期时间的结果