- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想锁定 MySQL (InnoDB) 中的特定行,以便其他连接无法读取该特定行。
start transaction;
Select apples from fruit where apples = 'golden';
commit;
现在我要申请独占锁
独占锁一种防止任何其他事务锁定同一行的锁。
https://dev.mysql.com/doc/refman/5.5/en/innodb-locking.html#innodb-shared-exclusive-locks
我假设,应用了锁,然后第二个连接试图访问同一行,必须等到第一个连接通过“提交”释放锁;
我的问题是,如何调整我的 SQL 语句以应用该锁定?还是这会在开始交易时自动发生?
我一直在努力寻找一个很好的例子,但没有找到。
最佳答案
START TRANSACTION;
Select apples
from fruit
where apples = 'golden'
FOR UPDATE;
...
COMMIT;
SELECT ... FOR UPDATE
语句首先锁定该行,然后将其返回给您。
任何其他试图同时对同一行执行相同操作的人都会等待您的COMMIT
或ROLLBACK
然后他们将收到该行...您所做的任何更改。
如果您无意更改行,只是想确保没有其他人可以这样做,那么您可以SELECT ... LOCK IN SHARE MODE
。
请注意,无论哪种方式,它在技术上都不是“行”,它实际上是被锁定的索引记录,但在 InnoDB 中,“一切都是索引”(即使是根本没有索引的表实际上仍然有一个索引,由系统自动创建)所以最终结果是一样的。
关于mysql - 独占锁(行级)——MySql需要一个例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46812431/
我想锁定 MySQL (InnoDB) 中的特定行,以便其他连接无法读取该特定行。 start transaction; Select apples from fruit where apples =
我想锁定 MySQL (InnoDB) 中的特定行,以便其他连接无法读取该特定行。 start transaction; Select apples from fruit where apples =
这个问题在这里已经有了答案: MySQL: comparison of integer value and string field with index (1 个回答) 关闭 5 年前。 我有一个
锁有两种分类方法。 (1) 从数据库系统的角度来看 锁分为以下三种类型: •独占锁(Exclusive Lock) 独占锁锁定的资源只允许进行锁定操作的程序使用,其它任何对它的操作均不
如下所示,我在 Linux (RHEL) 上运行 Python 2.6,但出于某种原因它没有 os.O_EXLOCK。有什么原因吗?有办法解决这个问题吗? Python 2.6.5 (r265:790
我是一名优秀的程序员,十分优秀!