:new
質問のように、更新がトリガーで参照されている列を完全に省略した場合、どのような値が取られますか?
:new
値を持つフィールドを受け入れる関数を使用する更新時にトリガーを起動するストアド プロシージャをデバッグしようとしていDATE
ます。ただし、実行中の更新では、参照列が更新されません。
トリガーは、更新が実行されるテーブルに格納されている値を使用しますか? それともどこかから持ってくるのでしょうか?
列が更新ステートメントで省略されている場合、:NEW.column
値は値と同じ:OLD.column
です。これは、更新ステートメントが実行される前にテーブルに格納されていた値です
ドキュメントはこれについて完全に明確ではありませんが、現在の行のバージョンを示してい:NEW
ます。 :OLD
そのため:NEW.col23
、行の新しいバージョンでのその列の値を示します。トランザクションがその列の値を変更していない場合、それは と同じになります :OLD.col23
。実際、これを使用してトリガーでテストをコーディングし、更新によって列の値が変更されたかどうかを確認できます。
if :NEW.col23 = :OLD.col23 then
-- value not changed