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;
不加这个判断,我的代码运行已经成功了,测试过了。但是加了这个代码,连触发器建立都报错,为什么????
在线等,求助!

解决方案 »

  1.   

    create or replace trigger cal_sal_trigger
    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;
      

  2.   

    我这个判断纯粹是做测试用的,因为我写判断上去,连最简单的判断语句,触发器编译都通不过。
    至于WHEN ,我已经测试通过了。  我现在只是想知道,为什么触发器里面,连IF判断都编译出错!
      

  3.   

    --你看看这样会报错不?如果还是报错,show errors看看具体什么错误
    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;