Antoine.st | Lock Model |
Lock PatternRequirement
Row Level Locking一応、SQL Server でもそれなりの行レベルロックは可能ですが、より柔軟な行レベルロック機構を用意するのが目的です。そのために、ロック管理テーブルを使う方法、単一テーブルで行う方法のふたつを用意します。 Who locked this row ?明示的にロックをかけた人 (Workstation) を示す情報を、ロック管理テーブル、または単一テーブルに設定します。これにより、誰がロックをかけたのか判断できるようにします。 Automatic Lock Releaseこのようなロック管理テーブルを利用する形で一番面倒なのは、異常終了時などにロックが保持されたままになってしまうことです。このため、自動的に不要なロックは解除される機能を盛り込みます。 Timeout for Locking不要なロックかどうかを判定するために、ロック可能時間 = ロックタイムアウト時間を設定できるようにします。時間が過ぎたロックに関しては、自動的に解除されます (この際に、クライアントマシンに変更が通知されます)。 Implementsさて、どう実装しましょうか、と。
|