Oracle SQL触发器导致编译错误

-2 sql oracle triggers

我有一个触发器不工作的问题.这是我的触发器代码

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)

Luk*_*ard 5

我可以在触发器的代码中看到三个问题:

  • 您需要使用:new(包括冒号)来引用行的新值,而不是new.

  • 要更改即将插入/更新的值,请编写:new.cijena := 9.9;而不是SET new.cijena=9.9.请注意,(a)此处没有SET关键字; (b)转让经营者:=不是=; (c)你在行尾需要一个分号.

  • ELSIF而不是ELSEIF.

最后,在SQL*Plus中,您可以使用它SHOW ERRORS TRIGGER "ZIVOTINJE_T2"来显示此触发器的错误.

  • @ user1189428:你还没做我说过的一切.你没有把`ELSEIF'改成'ELSIF`,还有两个没有前导冒号的``s`(在`> 10`和`<0`之前).另外,请避免在评论中发布太多代码.编辑您的问题以添加修改后的代码. (3认同)