php - 如何对 MySQL InnoDB 表中的一行进行长期锁定?

标签 php mysql sql innodb

我已经搜索了一段时间,但找不到太多。

是否可以在 MySQL 的 InnoDB 表上手动锁定单个行?

基本上我们有一个表,其中一些记录已被处理,不应再被编辑。它们需要保持当前的状态,但在读取数据方面仍然易于访问。

我们已经有一个“锁定”的列,它是 0 或 1,但是不知何故,它在不应该编辑的时候被编辑了。我们不想依赖代码的良好表现,而是想在 MySQL 级别对其进行硬锁定,因此这些不能被更改,即使我们的 PHP 代码试图在某个地方进行更改。

这可能吗?

最佳答案

没有。

要正确执行此操作,请使用应用程序分区,以便您的应用程序将事件数据存储在一个表中,将历史数据存储在另一个表中,并使用权限指定您的应用程序可以读取一个表并在另一个表上读/写。

或者,添加一个访问层,以便您通过 View 读取并通过存储过程写入,并让 SP 控制是否可以根据字段值写入行。

无论哪种方式,如果不在某处编写一些代码,您就无法使用 MySQL native 执行此操作

关于php - 如何对 MySQL InnoDB 表中的一行进行长期锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20638528/

相关文章:

java - eclipse :com. mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

sql - 求每个科目名称的学生的最高分

sql - 在 SQL 中使用 SELECT INTO 创建新表

php - 如何在不转到 php.ini 文件的情况下禁用 eval 函数?

php - 按月份和年份排序,2015-09 之后是 2016-01 而不是 2015-10

php - 尝试使用 sql 表中的数据填充 php 下拉列表

java - 查看一个表中出现在另一表中的值

php - 标签页重定向到主页

php - 如何使用 php 从 mysql 数据库中的 datetime Unix_timestamp 列中选择日期?

php - 如何添加 HTML 5 音频播放器?