【发布时间】:2014-02-08 11:11:59
【问题描述】:
我正在尝试让 oracle 触发器工作。
这是我目前的代码:
CREATE OR REPLACE TRIGGER CHK_SALES_JOB
BEFORE INSERT OR UPDATE OF JOB_ID ON EMPLOYEES
FOR EACH ROW
BEGIN
IF :old.department_id = 80 AND (:new.job_id != 'SA_REP' OR :new.job_id != 'SA_MAN') THEN
RAISE_APPLICATION_ERROR(-20001, 'Sales Department can only have SA_MAN or SA_REP');
END IF;
END;
这是更新声明:
UPDATE employees
SET job_id = 'SA_REP'
WHERE employee_id = 179;
我目前面临的问题是,如果使用 if 语句,它只会像这样工作:
IF :old.department_id = 80 AND :new.job_id != 'SA_REP' THEN
RAISE_APPLICATION_ERROR(-20001, 'Sales Department can only have SA_MAN or SA_REP');
END IF;
如果我在 If 语句中有 OR 条件,则代码将永远无法工作。它将毫无问题地编译触发器,但是当我尝试更新员工表时,它会不断显示 RAISE_APPLICATION_ERROR。
有没有办法解决这个问题?
提前致谢
【问题讨论】: