案例:scott.emp表的銷售員工資只能增加,不能減少
代碼:
CREATE OR REPLACE TRIGGER tr_emp_upd
BEFORE
UPDATE OF sal
ON emp
FOR EACH ROW
--
當更新銷售員時才觸發
WHEN
(OLD.job='SALESMAN')
DECLARE
BEGIN
IF(:NEW.sal<:OLD.sal)
THEN
raise_application_error(-20013,'銷售員工資不能降低!');
END
IF;
END;
WHEN
(OLD.job='SALESMAN')
DECLARE
BEGIN
IF(:NEW.sal<:OLD.sal)
THEN
raise_application_error(-20013,'銷售員工資不能降低!');
END
IF;
END;
運行情況:
SQL> update emp set
sal=sal-1000 where job='MANAGER';
3 rows updated
SQL> update emp set sal=sal-1000 where job='SALESMAN';
ORA-20013: 銷售員工資不能降低!
ORA-06512:
在"SCOTT.TR_EMP_UPD", line 4
ORA-04088: 觸發器 'SCOTT.TR_EMP_UPD' 執行過程中出錯