【发布时间】:2012-06-06 17:50:12
【问题描述】:
我正在为 Silverlight 应用程序创建 WCF Web 服务,并且我需要有一条记录在修改时被读/写锁定。
我使用的是 MySQL 5.5.11 版。
更具体地说,我想阻止请求在修改行时从行中读取数据。
UPDATE 和 SELECT 的两个 SQL 命令实际上非常简单,类似于:
更新(应该锁定写/读):
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以原子方式自行运行。也就是说,你正在尝试的应该仍然有效;是什么让你认为它没有?
标签: c# mysql pessimistic-locking rowlocking