トリガーで、列が明示的に値に設定されているかどうかを判断できますか、それとも更新ステートメントで言及されていませんか?

dba.stackexchange https://dba.stackexchange.com/questions/1604

  •  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
ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top