この簡単な例のトリガーを考えると:
CREATE TRIGGER example_update
ON example_table
FOR UPDATE
AS BEGIN
if update(someColumn) begin
update example_table SET last_update_date = GETDATE() WHERE id IN (SELECT id FROM inserted);
end
END
someColumn の古い値と someColumn の新しい値が等しい場合、update(someColumn) は true または false を返しますか? たとえば、次の 2 つの SQL ステートメントを実行するとします。
UPDATE example_table SET someColumn=1;
UPDATE example_table SET someColumn=1;
2 番目のステートメントは、トリガーの if ブロックを起動しますか?
また、これを実行すると、次のように推測できますか?
UPDATE example_table SET otherColumn=1;
次に、トリガーの update(someColumn) は false を返します。
これが繰り返しである場合は申し訳ありません: 関数が update と呼ばれるという事実により、検索結果が update ステートメント (update 関数とは非常に異なる) であふれ、この動作を特定することが非常に困難になりました。