【发布时间】:2015-11-19 09:45:49
【问题描述】:
我在一个表中有 5 行(1 到 5)。我希望第 2 行锁定一些更新,同时如果有人尝试更新第 4 行,那么他应该能够更新。
我正在用下面的代码尝试这个,但我觉得它把锁放在表级别而不是行级别。
-------- 会话 1
START TRANSACTION;
SELECT * FROM test WHERE t=1 FOR UPDATE;
UPDATE test SET NAME='irfandd' WHERE t=2;
COMMIT;
----- 会话 2(被阻止)
START TRANSACTION;
UPDATE test SET NAME='irfandd' WHERE t=4;
COMMIT;
【问题讨论】:
-
你的存储引擎是什么?
-
我正在使用 innodb + 使用没有主键约束
标签: mysql innodb rowlocking