有一种情况:如果Salary列的更新值小于其原始值,则打印错误消息并让更新不发生。这是我到目前为止所写的:
CREATE OR REPLACE TRIGGER TRIG1
BEFORE UPDATE OF SAL ON EMP
for each row
USER_XCEP EXCEPTION
WHEN (NEW.SAL<OLD.SAL)
BEGIN
RAISE USER_XCEP
EXCEPTION
WHEN USER_XCEP THEN
DBMS_OUTPUT.PUT_LINE('UPDATION NOT ALLOWED - ILLEGAL VALUES');
END;
我收到错误 - 错误的触发器规范
还有其他方法可以达到这个目的吗?
答案 0 :(得分:10)
你快到了;如果你想申报任何东西,你need a DECLARE block in a trigger;这意味着您的WHEN子句位于错误的位置。
create or replace trigger trig1
before update
of sal
on emp
for each row
when (new.sal < old.sal)
declare
user_xcep EXCEPTION;
PRAGMA EXCEPTION_INIT( user_xcep, -20001 );
begin
raise user_xcep;
end;
几点:
答案 1 :(得分:0)
这显然是针对Oracle的。在标题中使用Oracle会很好,所以它不会出现在每次搜索中。