OracleのTriggerにてAfterとBeforeの使い方

After Triggerの例:

CREATE OR REPLACE TRIGGER emp_after_insert_trig
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
INSERT INTO emp_audit VALUES(:new.employee_id, USER, SYSDATE, 'INSERT');
END;
/

このトリガーは、employeesテーブルに新しい行が挿入された後に実行されます。トリガーは、emp_auditテーブルに新しい行を挿入します。この行には、新しいemployee_id、ユーザー名、現在の日時、および “INSERT”というアクションが含まれます。

Before Triggerの例:

CREATE OR REPLACE TRIGGER emp_before_update_trig
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
IF :new.salary > 10000 THEN
RAISE_APPLICATION_ERROR(-20001, 'Salary cannot be greater than 10000');
END IF;
END;
/

このトリガーは、employeesテーブルの更新が行われる前に実行されます。トリガーは、新しいsalaryが10000を超える場合にエラーメッセージを発生させます。トリガーは、DML操作を中止することができるため、更新操作が行われずにエラーが返される場合があります。

コメント

タイトルとURLをコピーしました