トリガー変数 (PL/SQL)

NEW および OLD は、明示的に定義せずに PL/SQL トリガーと共に使用できる、特殊変数です。

  • NEW は、行トリガーでの挿入および更新操作における、表の新規行を表す疑似レコード名です。 使用するには、:NEW.column とします。ここで column は、トリガーが定義された表の列の名前です。
    • BEFORE 行トリガー で使用した場合、:NEW.column の初期の内容は、挿入される新規行内、または元の行を置き換える行内にある列値となります。
    • AFTER 行トリガー で使用した場合、新しい列値は既に表に格納されています。
    • トリガーが DELETE 操作によって起動される場合、トリガーで使用される :NEW.column は NULL になります。

    トリガー・コード・ブロックでは、:NEW.column を他の変数と同様に使用できます。 BEFORE 行トリガーのコード・ブロックで :NEW.column に値が割り当てられた場合、割り当てられた値は、挿入または更新された行内で使用されます。

  • OLD は、行トリガーでの更新および削除操作における、表の元の行を表す疑似レコード名です。 使用するには、:OLD.column とします。ここで column は、トリガーが定義された表の列の名前です。
    • BEFORE 行トリガー で使用した場合、:OLD.column の初期の内容は、削除される行内、または新規行によって置き換えられる元の行内にある列値となります。
    • AFTER 行トリガー で使用した場合、元の列値はもはや表に格納されていません。
    • トリガーが INSERT 操作によって起動される場合、トリガーで使用される :OLD.column は NULL になります。

    トリガー・コード・ブロックでは、:OLD.column を他の変数と同様に使用できます。 BEFORE 行トリガーのコード・ブロックで :OLD.column に値が割り当てられた場合、割り当てられた値は、トリガーのアクションに何も影響を及ぼしません。