2

MySQL 版本:v5.0.95

基本上我有客户试图获取数据 - 每个客户应该只获得唯一的行。

START TRANSACTION;

SELECT id where result='new';

UPDATE SET result='old' WHERE id=$id;

COMMIT;

LOCK IN SHARED MODE在 select 语句上仍然让其他客户端读取数据,这似乎是一个问题。

基本上我需要选择一次的数据,更新,而不是被另一个客户端再次读取。

4

1 回答 1

5

SELECT FOR UPDATE将阻止另一个读取,同时LOCK IN SHARED MODE将允许读取,但不允许来自另一个客户端的更新

于 2012-05-11T09:38:45.810 回答