php - 手动锁定单个表行

标签 php mysql

我之前已经在 MySQL 中锁定了整个表,但我需要做的是锁定特定行。更具体地说,当我的 PHP 脚本执行时,我需要它锁定特定行,以便无法读取(或写入)该行,运行其余代码,然后在完成时解锁该行。

我知道我需要使用 InnoDB,但我一直无法找到如何做到这一点。我不确定它是否需要事务,如果需要,如何使用它们进行行级锁定。

更新

也许我以错误的方式思考这个问题。从我已经完成的阅读和所提供的内容来看,InnoDB 表在读/写时自动锁定行,我得到了这一点。但我担心的是,我想通过 sleep 在我的 PHP 代码中引入延迟。我希望之前读取的行上的所有读取尝试都被锁定,直到 sleep 完成,并且脚本完成其其余功能。

如果我只是运行:

$result = $mysqli->prepare('...');
$result->bind_param('...', $...);
$result->execute();
$result->bind_result($...);
$result->fetch();
sleep('15');
//More script execution
$result->close();

这会阻止其他 MySQL 查询访问该选定的行,直到我关闭连接吗?

最佳答案

MySQL 仅使用 MyISAM 表中的表级锁定。对于行级锁定,您需要切换到 innoDB

请参阅documentation它讲述了 mysql 中锁的功能。

关于php - 手动锁定单个表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26144695/

相关文章:

php - 如何避免在嵌套循环中执行 mysql 查询?

c++ - Qt - 如何获取|编译Mysql驱动

php - (Laravel) 表关系和外键的用法

mysql - 在数据库中存储喜欢和不喜欢

php - phpmyadmin 中缺少字符集。该怎么办?

php - 如何从本地连接远程 mysql 数据库?

mysql - 如何选择零结果mysql?

javascript - Angularjs 可折叠表与 php mysql

php - 从我的连接表获取数据

php - 在 wp_user 表中添加新列