2 Day Developer > Using Triggers > Managing Triggers in the Da... > Creating a Trigger With the...
Creating a Trigger With the BEFORE Option and WHEN Clause |
![]() Previous |
![]() Next |
In Example: Creating a Database Trigger With the BEFORE Option, you define a BEFORE trigger that is fired for each row that is updated. If there are five employees in department 20, and the salaries for all the employees in the department are updated, then the trigger fires five times when those rows are updated. Note the use of the WHEN clause to restrict the firing of the trigger.
Creating a Database Trigger With the BEFORE Option
-- create a temporary table
CREATE TABLE emp_sal_log (emp_id NUMBER, log_date DATE,
new_salary NUMBER, action VARCHAR2(50));
CREATE OR REPLACE TRIGGER log_salary_increase -- create a trigger
BEFORE UPDATE of salary ON employees FOR EACH ROW
WHEN (OLD.salary < 8000)
BEGIN
INSERT INTO emp_sal_log (emp_id, log_date, new_salary, action)
VALUES (:NEW.employee_id, SYSDATE, :NEW.salary, 'New Salary');
END;
/
-- update the salary with the following UPDATE statement
-- trigger fires for each row that is udpated
UPDATE employees SET salary = salary * 1.01 WHERE department_id = 60;
-- view the log table
SELECT * FROM emp_sal_log;