1

1人のユーザーがテーブル内の10レコードのうち1レコードにアクセスする場合。同時に、2番目のユーザーが1番目のユーザーの同じレコードにアクセスしようとした場合、そのレコードは表示されませんが、代わりに2番目のレコードが表示されます。この最初のユーザーは、処理と更新のためにしばらくの間レコードを保持するためです。それまでは、2番目のユーザーアプリケーションからselectクエリが実行されたとしても、このレコードを他のユーザーに表示しないでください。行ロックを使用することは可能ですか?行ロックとホールドロックを実装し、行レベルロックで使用されているホールドロックを解除する方法の例を教えてください。これとは別に、他に何か提案があれば共有してください

Asp.NetでSqlServer2005を使用しています

Babu.M

4

1 に答える 1

0

行ロックが選択されなくなるかどうかはわかりませんが、監査テーブルを使用できませんか? たとえば、ユーザー 1 がレコードにアクセスしてそのレコードの ID を監査テーブルに格納し、ユーザー 2 がレコードを使用しようとすると、アプリケーションはレコードの主キーが監査テーブルにあるかどうかを確認する必要があります。 2 番目のユーザーがアクセス権を取得しない場合、2 番目のユーザーはアクセス権を取得しません。ユーザーがレコードの使用を終了したら、監査テーブルのレコードを削除するか、レコードを保持してフラグを設定し、使用されなくなったことを示すことができます。これにより、誰がどのレコードをどのレコードで変更したかを確認できる日時スタンプを追加する場合は時刻。

繰り返しますが、選択コマンドを使用するときは、主キーが監査テーブルに存在する場合は選択しないようにします。

お役に立てれば

于 2012-04-25T08:26:32.640 に答える