Я создаю веб-службу WCF для приложения Silverlight, и мне нужно, чтобы запись была заблокирована для чтения и записи при изменении.
Я использую 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
работает атомарно сам по себе. Тем не менее, то, что вы пытаетесь, все еще должно работать; что заставляет вас думать, что это не так? - person eggyal   schedule 06.06.2012