我需要在表上创建触发器,如果存在条件,则每次插入时都会更新列的值。 所以在这样的表中:
如果“ 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;
这不起作用
答案 0 :(得分:0)
更正了代码中的一些语法错误。
这是一个小例子。对我来说很好:
create table Cabecdoc (IntrastatnatA number, IntrastatnatB number, regimeiva char(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;
--inserting a row...
insert into Cabecdoc values (null, null, '3');
--...and checking
select * from Cabecdoc;
--Output:
IntrastatnatA IntrastatnatB regimeiva
1 1 3