私はいくつか似たような質問を見ましたが、このシナリオには全く触れていません。並行読み取りと書き込みアクセスを持つテーブルのロックヒント
私はオンライン評価アプリケーションを使用して、ユーザーに1ページあたり1つの質問を提示し、回答を記録します。ユーザーは質問間を移動でき、回答は自動的に保存されます。別のページ(質問Q1)から(質問Q2)をナビゲートし、データベースをしなければならない
:
- UPDATE Q1にこのユーザーの応答(存在する場合)、またはQ1に対する応答を挿入します。
- Q2(存在する場合)にこのユーザーの応答を選択して、ページにデータを入力します。
[レスポンス]テーブルは、多数のユーザーが同時に読み書きするという競合のポイントです。ただし、各ユーザーは、自分自身の行を読み取って、に書き込みます。
これは私が(READUNCOMMITTED)
とUPDATEを(NOLOCK)
と安全に使うことができると考えています。私の心配は、ユーザーがページを進んでジャンプして、更新前の古いデータを取得する状況を望んでいないことです。私は2つの操作をトランザクション内に置くことができますが、NOLOCKヒントを使用している場合は何か違いがありますか?
このテーブルの競合を緩和するために使用できるロック方法は何ですか?
現在、SQL2000を使用しています。
同じユーザーの同時ログインを防止するサイトのセキュリティが設定されていますか?ロックヒントに問題があるかもしれません... – JNK
"UPDATE with(NOLOCK)"とはどういう意味ですか?更新は常にロックを取ります。 'NOLOCK'は' SELECT'クエリにのみ適用されます。 –
@JNK:はい、同じユーザーIDは1度だけログインします。 –