私はタスクを持っていました - 実際のテーブルデータの変更(同じ値の更新だけでなく)で動作する更新トリガを作成するタスクがありました。その目的のために私はコピーテーブルを作成し、更新された行を古いコピーされた行と比較し始めました。トリガが完了すると、それはコピーを実現するためにneccessaryです:ストアドプロシージャとトリガー
UPDATE CopyTable SET
id = s.id,
-- many, many fields
FROM MainTable s WHERE s.id IN (SELECT [id] FROM INSERTED)
AND CopyTable.id = s.id;
私はもうトリガーにこの醜いコードを持って好きではないので、私は、ストアドプロシージャにそれを抽出しています
CREATE PROCEDURE UpdateCopy AS
BEGIN
UPDATE CopyTable SET
id = s.id,
-- many, many fields
FROM MainTable s WHERE s.id IN (SELECT [id] FROM INSERTED)
AND CopyTable.id = s.id;
END
結果は次のとおりです。 - 無効なオブジェクト名 'INSERTED'。これを回避するにはどうすればよいですか?
よろしく、
あなたは単にトリガー内からストアドプロシージャを呼び出すためにしようとしています。また、同様の手順他の場所を呼ぶ可能性がありますか? – Sparky
いいえ、トリガーからのみです。 – noober