Aşağıdaki trigger, empoyees tablosunda salary değeri değiştiği zaman, değiştiği miktar değerini salary_history tablosuna insert etmektedir:
CREATE OR REPLACE TRIGGER SALARY_HISTORY_UPDATE
AFTER UPDATE ON EMPLOYEES
FOR EACH ROW
WHEN (NEW.salary <> OLD.salary)
DECLARE
e_raise EMPLOYEES.SALARY%TYPE;
BEGIN
e_raise := :NEW.salary - :OLD.salary;
insert into salary_history(EMPLOYEE_ID,REAISE,RAISE_DATE) values(:NEW.employee_id,e_raise,sysdate);
END;
/
SALARY_HISTORY_UPDATE adında bir trigger yaratılmıştır. AFTER UPDATE ON EMPLOYEES ile EMPLOYEES tablosunda herhangi bir update işlemi yapıldıktan sonra bu trigger'ın çağrılacağı belirtilmiş olur. FOR EACH ROW ise row level bir trigger olduğunu belirtilir. WHEN (NEW.salary <> OLD.salary) ile eski değer ve yeni değer karşılaştırılır ve eğer salary değeri değişti ise kodun çalışması sağlanır. e_raise := :NEW.salary - :OLD.salary; ile artış miktarı alınır ve altındaki insert ile tabloya değerler insert edilir