白日空想家 2018-10-10 02:49 采纳率: 66.7%
浏览 709

语句没报错但修改数据不触发是为什么?

create or replace trigger t1
before update of sal,comm on emp
for each row
begin
if :new.sal+:new.comm >20000 then
raise_application_error(-20010,'总工资太高');
end if;
end;

  • 写回答

1条回答 默认 最新

  • CZ__ 2018-10-10 08:13
    关注

    我执行没有问题,正常触发异常

    CREATE OR REPLACE TRIGGER t1
    BEFORE UPDATE OF sal,comm ON emp
    FOR EACH ROW
    BEGIN
      IF :new.sal+:new.comm > 20000 THEN
        raise_application_error(-20010,'总工资太高');
      END IF;
    END;
    

    Script Output输出的信息:

    Error starting at line : 661 in command -
    UPDATE emp SET sal=18000,comm=3000 WHERE id=1
    Error report -
    SQL Error: ORA-20010: 总工资太高
    ORA-06512: at "IIS.T1", line 3
    ORA-04088: error during execution of trigger 'IIS.T1'
    
    
    评论

报告相同问题?