私はこれに近づいていると思いますが、正しく理解できないようです。私もたくさんの質問と回答に目を通しましたが、答えが見つからないか、他の人の質問を理解していないので、これが再投稿である場合はご容赦ください.
私がやりたいことは、「代わりに」トリガーのアイデアに関する限り、かなり基本的なようです。私は SQL Server 2008 で作業しています。ビューを直接更新できないため、基になるテーブルの 1 つを更新する代わりに更新トリガーが必要です。問題のテーブルの主キーは Update ステートメントの一部として含まれないため、外部キーを使用して選択する必要があります。
Update ステートメントの Where 句で指定された外部キーを取得しようとしていますが、間違った構文を使用しているに違いありません。基になるテーブルのキーとして使用される可能性が高いため、「場所」の値を取得できる必要があると確信しています。だから、声明を考えると...
UPDATE table1 SET field1 = 'value1' WHERE key_field = 'key_value'
トリガー定義内の「key_value」にアクセスするにはどうすればよいですか? 私は次のことを試しました...
DECLARE @pk INT
SELECT @pk = p_key
FROM dbo.ptable p, UPDATED u
WHERE p.f_key = u.key_field
そしてこれも…
DECLARE @pk INT
SELECT @pk = p_key
FROM dbo.ptable
WHERE f_key = (SELECT key_field
FROM UPDATED)
しかし、これらのどちらも私にはうまくいかないようです。を使用して更新値を正しく取得していると確信しています...
DECLARE @uValue VARCHAR
SELECT @uValue = field1
FROM UPDATED
このような挿入または更新に派生した主キーを使用できるようにしたい...
INSERT INTO dbo.xtable (fieldx) VALUES (@uValue) WHERE p_key = @pk;
また
UPDATE dbo.xtable SET fieldx = @uValue WHERE p_key = @pk;
うまくいけば、私は理にかなっていて、それほど遠くない. ご協力いただきありがとうございます。