如果触发在列上插入值?

问题描述 投票:0回答:1

我需要在表上创建一个触发器,如果​​存在条件,则在每个插入中更新列的值。所以在这样的表中:

如果“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;

这不起作用

sql oracle plsql database-trigger
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.