我正在为一个Silverlight应用程序创建一个WCF Web服务,并且我需要在修改时将一条记录读取/写入锁定。悲观锁定记录?
我正在使用MySQL版本5.5.11。
更具体地说,我想阻止从行中读取数据的请求,当它被修改时。
两个SQL的UPDATE命令和SELECT实际上是非常简单的,是这样的:
更新(应该锁定为读/写):
UPDATE user SET user = ..... WHERE id = .....
选择(不应该能够在阅读从上面的查询)锁定:
SELECT * FROM user WHERE id = .....
这里是我的尝试,但它似乎不工作或锁定任何东西:
START TRANSACTION;
SELECT user
FROM user
WHERE id = 'the user id'
FOR UPDATE;
UPDATE user
SET user = 'the user data'
WHERE id = 'the user id';
COMMIT;
为什么即使在交易中执行此操作? 'UPDATE'独立运行。也就是说,你所尝试的应该仍然有效;是什么让你觉得它没有? – eggyal