【发布时间】:2019-03-28 14:35:54
【问题描述】:
如果存在条件,我需要在表上创建一个触发器,该触发器在每次插入时更新列的值。 所以在这样的表中:
如果 "RegimeIva" = '3',我需要触发器将所有空值更新为 '1' 以获得如下结果:
我试过了:
create or replace TRIGGER AtualizaNat before INSERT ON Cabecdoc
for each row
BEGIN
if :new.IntrastatnatA is null and :new.intrastatnatB is null and :new.regimeiva = '3' then
:new.intrastatnatA : 1; :new.intrastatnatB : 1;
else
:new.intrastatnatA : null; :new.intrastatnatB : null;
end if;
END;
这不行
【问题讨论】:
-
= is null需要改成is null和:= is null;需要改成:= null; -
是的,我的错!但这仍然不起作用。
-
您只想更新插入的一行吗?如果是这样,什么不完全有效?
-
赋值应该通过 := 而不仅仅是 : 所以它应该是 :new.intrastatnatA := 1;而不是 :new.intrastatnatA : 1;
-
是的,只插入一行。 "消息 156,级别 15,状态 1,行 1 关键字 'or' 附近的语法不正确。
标签: sql oracle plsql database-trigger