是否触发在列上插入Value?

时间:2019-03-28 14:35:55

标签: sql oracle plsql database-trigger

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

enter image description here

如果“ RegimeIva” =“ 3”,我需要触发器将所有空值更新为“ 1”,以便获得如下结果:

enter image description here

我尝试过:

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;

这不起作用

1 个答案:

答案 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