にロック:読み取り専用私はこれは私のシナリオでSQL Server 2008で何かWRTロックを欠けているように見えるSQL Serverの
- TRAN開始します。
- テーブルAから読み取り、特定の行が見つかるようにします。
- 読み取り中は、読み取り専用ロックを読み取ります。見つからない場合は、エラーをスローします。
- 表Aへの参照を含む表Bに挿入してください。
- tran(ロック解除)をコミットします。
さまざまな設計上の制約のため、この特定のインスタンスでは、これを管理するための関係を作成することはできません。だから私はコードでそれをする必要があります。
テーブルをXLOCKまたはUPDLOCKしたくないのですが、私が行っているトランザクションは読み込みのみであり、書き込みではありません。しかし、明らかに私は参照された行を更新/削除することを望んでいません。 だから私は外部の視点からの読み取り専用ロックが必要です。
私は幻想読解を可能にしたくありません。私は明らかに異なる行のバージョンを可能にしたくありません。 (削除後)トリガがテーブルB
に参照をヌルになるので
TRANがコミットされたら、それはAを変更するテーブルの罰金だこれは私が持っているものです。
BEGIN TRAN
-- test
IF NOT EXISTS (
SELECT 1
FROM Table1
WITH (HOLDLOCK, ROWLOCK)
WHERE (ID = @ID)
) {throw}
{perform insert into Table2}
COMMIT TRAN
ありがとうジョン:) – IamIC
お手伝いしてうれしいです! –