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