トリガーで、列が明示的に値に設定されているかどうかを判断できますか、それとも更新ステートメントで言及されていませんか?
-
16-10-2019 - |
質問
このような列col1を備えたテーブルを与えられます:
create table MyTest (
col1 int NULL,
col2 decimal(7, 2) NULL
);
insert into MyTest values ( 1, 1.1);
更新のトリガーが次の更新ステートメントのどれが実行されたかを決定する方法はありますか?
A:
update MyTest set col1 = 3;
B:
update MyTest set col1 = 3, col2 = 1.1;
解決
これがセットベースのトリガーになる場合、または一度に1つの行のみを処理するように設計している場合は、違いをもたらしますが、これにより正しい方向に向けられるはずです。
IF
UPDATE(col1)
AND UPDATE(col2)
AND EXISTS(SELECT * FROM inserted WHERE col1 = 3 AND col2 = 1.1)
BEGIN
DO STUFF
END
IF
UPDATE(col1)
AND EXISTS(SELECT * FROM inserted WHERE col1 = 3)
BEGIN
DO STUFF
END
所属していません dba.stackexchange