2

:new質問のように、更新がトリガーで参照されている列を完全に省略した場合、どのような値が取られますか?

:new値を持つフィールドを受け入れる関数を使用する更新時にトリガーを起動するストアド プロシージャをデバッグしようとしていDATEます。ただし、実行中の更新では、参照列が更新されません。

トリガーは、更新が実行されるテーブルに格納されている値を使用しますか? それともどこかから持ってくるのでしょうか?

4

2 に答える 2

5

列が更新ステートメントで省略されている場合、:NEW.column値は値と同じ:OLD.columnです。これは、更新ステートメントが実行される前にテーブルに格納されていた値です

于 2013-07-26T08:29:02.910 に答える
5

ドキュメントはこれについて完全に明確ではありませんが、現在の行のバージョンを示してい:NEWます。 :OLD

そのため:NEW.col23、行の新しいバージョンでのその列の値を示します。トランザクションがその列の値を変更していない場合、それは と同じになります :OLD.col23。実際、これを使用してトリガーでテストをコーディングし、更新によって列の値が変更されたかどうかを確認できます。

if :NEW.col23 = :OLD.col23 then
   --  value not changed
于 2013-07-26T08:51:49.653 に答える