Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMPNO NUMBER(4)
ENAME VARCHAR2(10) Y
JOB VARCHAR2(9) Y
MGR NUMBER(4) Y
HIREDATE DATE Y
SAL NUMBER(7,2) Y
COMM NUMBER(7,2) Y
DEPTNO NUMBER(2) Y
表结构是这样的,为什么触发器会报错啊,找不到哪里错了,大家帮忙看下哦
create trigger emp_trigger2
before update of sal,comm or delete
on emp
for each row
when (old.job='SALESMAN')
BEGIN
case when updating('sal') then
if :new.sal< :old.sal then
raise_application_error(-20001,'职业为saleman的员工工资不能降');
end if;
when updating('comm') then
if :new.comm< :old.comm then
raise_application_error((-20001,'职业为saleman的员工comm不能降');
end if;
when deleting
raise_application_error(-20003,'职业为saleman的员工不能删');
end case;
end
drop trigger emp_trigger
update emp set sal=2000.00 where ename='ALLEN' and job='SALEMAN'
------解决方案--------------------
- SQL code
create or replace trigger emp_trigger2 before update of sal,comm or deleteon empfor each rowwhen (old.job='SALESMAN')BEGIN case when updating('sal') then if :new.sal< :old.sal then raise_application_error(-20001,'职业为saleman的员工工资不能降'); end if; when updating('comm') then if :new.comm< :old.comm then raise_application_error(-20001,'职业为saleman的员工comm不能降');--多个括号 end if; when deleting then --少个then raise_application_error(-20003,'职业为saleman的员工不能删'); end case; end;/--你的测试部分估计也不会有你想要的结果,job='SALESMAN'吧,还有ename注意大小写,可用upper(ename)=...update emp set sal=2000.00 where ename='ALLEN' and job='SALEMAN'