あなたが使用できるロック:
BEGIN TRANSACTION
UPDATE someTable set SomeThing = 'new value' where someID = 1
-- this will lock 'someTable' in affected row as long as transaction alive.
-- in another connection
select * from someTable with (readpast)
-- this will skip locked rows
が、これは実装するための適切な方法ではないことに留意してください。
- ユーザーは、システムをパニックにしてデータを失うか、バグだと言うかもしれません。
- 行をロックするときは、接続/トランザクションがタイムアウトするまで、またはユーザーがその行をコミットするまでロックされることに注意してください。
- 接続プーリングがありません。
- リモート接続のため、ウェブアプリの考えが悪い
with (readpast)
ステートメントなしのsomeTable
を含むクエリはすべて待機する必要があります。
編集ビューでユーザーに「表示」させてください。キャッシング編集行のためのASP.NETでは:
Application[string.Format("{0}.{1}", tableName, primaryKey)] = true;
行を編集するとロックを取得することをお勧めします。すべての時代のレコードは、ロックを取得するだけで見て、あなたのDBのパフォーマンスに影響を与えます。ロックされているとレコードが見えないことが本当に必要ですか?ロックされていると編集できません。 – kevpie