【发布时间】:2013-11-20 09:07:11
【问题描述】:
我通过以下查询在一个事务中锁定了一行
START TRANSACTION;
SELECT id FROM children WHERE id=100 FOR UPDATE;
在另一笔交易中,我有如下查询
START TRANSACTION;
SELECT id FROM children WHERE id IN (98,99,100) FOR UPDATE;
它给出了错误锁等待超时超时。
这里100已经被锁定(在第一个事务中)但是ids 98,99没有被锁定。如果在上面的查询中只有100行被锁定,是否有可能返回98,99的记录。所以结果应该如下
身份证
===
98
99
===
Id 100 应该被忽略,因为 100 被事务锁定。
【问题讨论】:
-
你是否使用 InnoDB 进行行表锁定?
标签: mysql transactions