create or replace trigger cal_sal_trigger
before update on 月工资纪录
for each row
when(new.奖惩金额 is not null and new.绩效工资 is not null)
begin
:new.税前工资 := :new.奖惩金额 + :new.绩效工资 + :new.基本工资;
if 400 <= 500 then :new.个人所得税 := 5;
end if;
end cal_sal_trigger;
这段代码,问题出在 if 400 <= 500 then :new.个人所得税 := 5; end if;
不加这个判断,我的代码运行已经成功了,测试过了。但是加了这个代码,连触发器建立都报错,为什么????
在线等,求助!
before update on 月工资纪录
for each row
-- 你加这个什么作用? when 也要和then 配对的
-- when(new.奖惩金额 is not null and new.绩效工资 is not null)
begin
:new.税前工资 := :new.奖惩金额 + :new.绩效工资 + :new.基本工资;
if 400 <= 500 then :new.个人所得税 := 5;
end if;
--你这个判断也是一直为true啊
end cal_sal_trigger;
至于WHEN ,我已经测试通过了。 我现在只是想知道,为什么触发器里面,连IF判断都编译出错!
create or replace trigger cal_sal_trigger
before update on 月工资纪录
for each row
begin
:new.税前工资 := :new.奖惩金额 + :new.绩效工资 + :new.基本工资;
if 400 <= 500 then :new.个人所得税 := 5;
end if;
end cal_sal_trigger;