2

Java フロントエンドと MySQL バックエンドのシナリオがあり、SELECT に「LOCK IN SHARE MODE」を使用しました。別のプロセスから同じ行を要求すると、データが返されます..しかし、更新することはできません。私がしたいのは、読み取り専用のコピーしかないことをユーザーに通知することです。そのため、情報を見たい場合は、後で要求することができます..行のステータスを確認して、ユーザーがこの状況について通知されますか?? 「FOR UPDATE」を使用すると、最初のユーザーがデータを保存するまで待機します。空白の画面があるだけの場合や、ボタンをクリックしても何も起こらない場合は、ユーザーフレンドリーではないと思います。どんな助けでも大歓迎です。MySQL 5.5、Java 7 を使用。

4

2 に答える 2

1

短い答えは「できません」です!

このディスカッションをご覧になることをお勧めします。

[編集]

その投稿への回答は次のように述べています。

名前のないロックについては (ロックの状態をチェックすることは) できません!!!! 詳細: http://forums.mysql.com/read.php?21,222363,223774#msg-223774

行レベルのロックは、アプリケーション レベルのロック用ではありません。それらは、一貫した読み取りと書き込みを実装するための単なる手段です。つまり、できるだけ早く解放する必要があります。独自のアプリケーション レベルのロックを実装する必要がありますが、それほど難しくありません。おそらく単純なuser_idフィールドで十分でしょう。null の場合、ロックはありません。ただし、null でない場合、id は誰がレコードを保持しているかを示します。この場合、user_idフィールドを更新するには行レベルのロックが必要です。前に言ったように、レコードのロック/ロック解除が完了したらすぐに MySQL ロックを解放する必要があります。

于 2012-10-09T15:38:02.740 に答える