- 更新ロック:他のトランザクションからUPDATE, DELETE不可
- 排他ロック:他のトランザクションからSELECT,UPDATE, DELETE不可
先日、SQLServerで排他制御の実験をしてみました。実施すると、まさしく共有ロックの動作をしていました。
その方法は、SQL文にヒントをつける方法です。以下の組み合わせで実現します。
■ロックの範囲
- ROWLOCK:行単位のロック
- PAGLOCK:ページ単位のロック
- TABLOCK:テーブル単位のロック
■ロックの方式
- READPAST:ロック行をスキップして取得する(SELECTだけ)
- UPDLOCK:他のトランザクションからSELECT不可にする
- XLOCK:排他ロックを強制的に使用(PAGLOCK・TABLOCKのいずれかも指定)
たとえば、ORACLEのFor Update相当にしようとすると、こんな感じ。
SELECT * FROM T_HOGE WITH (ROWLOCK, UPDLOCK)
ほかには、ISOLATION LEVELを変更する方法があるらしいですが、コレは別途整理したいと思います。
0 件のコメント:
コメントを投稿