|
分類:[C#]
こんばんは。
SQL Server 2008 (R2ではない)を使用しています。
データのロックを掛けたいのですが、思うようにいきません。
(1)テーブルロックを掛けたい
(2)他のトランザクションはSELECTは可能で
INSERT、UPDATE、DELETEは不可
(3)同一トランザクションは INSERT、UPDATE、DELETEした結果を
SELECT可能としたい
テーブルロックではないですが「REPEATABLE READ」でよいかと思い
トランザクション開始直後に
「SELECT * FROM tableA WITH (REPEATABLEREAD)」を実行してみた
のですが、ロックされません。
確認方法は上記SQL実行直後にデバッグモードで止めて、
Releaseで作成したほうのEXEを実行してSelectして一覧表示後、
データのInsert処理を行いましたが、Insertできてしまいました。
TABLOCK, UPDLOCK, NOWAIT
TABLOCKX, READCOMMITTED, NOWAIT
UPDLOCK, ROWLOCK, READCOMMITTED, NOWAIT
と組み合わせを試したのですがどれも思うようにいきません。
ご教授いただけると幸いです。
また、「SELECT * FROM tableA WITH (REPEATABLEREAD)」を実行中に
別のトランザクションで「SELECT * FROM tableA WITH (REPEATABLEREAD)」を
実行するとロック中のためエラーになるという認識であっておりますでしょうか?
よろしくお願いします。
|