2 Day Developer > Using Triggers > Managing Triggers in the Da... > Creating a Trigger With an ...
Creating a Trigger With an Exception Handler |
![]() Previous |
![]() Next |
Example: Creating a Database Trigger With an Exception Handler shows how to include an exception handler with a trigger. In this example, an exception is raised if an UPDATE operation changes the manager ID of an employee.
Creating a Database Trigger With an Exception Handler
-- create a temporary table
CREATE TABLE emp_except_log (emp_id NUMBER, mgr_id_new NUMBER,
mgr_id_old NUMBER, log_date DATE, action VARCHAR2(50));
CREATE OR REPLACE TRIGGER emp_log_update -- create a trigger
BEFORE UPDATE ON employees FOR EACH ROW
DECLARE
mgrid_exception EXCEPTION;
BEGIN
IF (:NEW.manager_id <> :OLD.manager_id) THEN
RAISE mgrid_exception;
END IF;
INSERT INTO emp_except_log (emp_id, mgr_id_new, mgr_id_old, log_date, action)
VALUES (:NEW.employee_id, :NEW.manager_id, :OLD.manager_id,
SYSDATE, 'Employee updated');
EXCEPTION
WHEN mgrid_exception THEN
INSERT INTO emp_except_log (emp_id, mgr_id_new, mgr_id_old, log_date, action)
VALUES (:NEW.employee_id, :NEW.manager_id, :OLD.manager_id,
SYSDATE, 'Employee manager ID updated!');
END;
/
-- update employees with the following UPDATE statements, firing trigger
UPDATE employees SET salary = salary * 1.01 WHERE employee_id = 105;
-- the trigger raises an exception with this UPDATE
UPDATE employees SET manager_id = 102 WHERE employee_id = 105;
-- view the log table
SELECT * FROM emp_except_log;