我有一个触发器不工作的问题.这是我的触发器代码
create or replace trigger "ZIVOTINJE_T2"
BEFORE
insert or update on "ZIVOTINJE"
for each row
begin
IF new.cijena>10 THEN
:new.cijena:=9.9
ELSEIF new.cijena<0 THEN
:new.cijena:=0.1
END IF;
end;
Run Code Online (Sandbox Code Playgroud)
当我尝试在表ZIVOTINJE中插入实体时,我得到了这个
ORA-04098: trigger 'DENISS.ZIVOTINJE_T2' is invalid and failed re-validation
Run Code Online (Sandbox Code Playgroud)
我可以在触发器的代码中看到三个问题:
您需要使用:new(包括冒号)来引用行的新值,而不是new.
要更改即将插入/更新的值,请编写:new.cijena := 9.9;而不是SET new.cijena=9.9.请注意,(a)此处没有SET关键字; (b)转让经营者:=不是=; (c)你在行尾需要一个分号.
用ELSIF而不是ELSEIF.
最后,在SQL*Plus中,您可以使用它SHOW ERRORS TRIGGER "ZIVOTINJE_T2"来显示此触发器的错误.