0

Silverlight アプリケーション用の WCF Web サービスを作成しています。変更時に読み取り/書き込みロックされるレコードが必要です。

MySQL バージョン 5.5.11 を使用しています。

具体的には、リクエストが変更中に行からデータを読み取らないようにしたいと思います。

UPDATE と SELECT の 2 つの 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;
4

2 に答える 2

0

MySqlは、デフォルトでマルチバージョンの同時実行制御を使用します(これは、MSSQLの代わりに、非常に優れた動作です)。ロック読み取り(LOCK IN SHARE MODE)を使用して、目的を達成してください。

于 2012-06-06T18:25:08.473 に答える