2012-05-09 84 views
2

MySQL的优化版本:v5.0.95MySQL的InnoDB的交易+锁定

基本上我有客户想获得的数据 - 每个客户端应该只得到唯一的行。

START TRANSACTION; 

SELECT id where result='new'; 

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

COMMIT; 

SELECT语句LOCK IN SHARED MODE还是让其他客户端读取数据,这似乎是一个问题。

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

回答

4

SELECT FOR UPDATE会阻塞另一个读,而LOCK IN SHARED MODE将允许读取,但不允许更新从另一个客户端

+0

谢谢,这确实起作用。 – Michael