Триггер для вставки значения в столбец, если? - PullRequest
0 голосов
/ 28 марта 2019

Мне нужно создать триггер для таблицы, который обновляет при каждой вставке значение столбца, если присутствует условие. Так в таблице вот так:

enter image description here

Мне нужен триггер, чтобы обновить все нулевые значения до «1», если «RegimeIva» = «3», чтобы получить такой результат:

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 голосов
/ 28 марта 2019

Исправлено несколько синтаксических ошибок в вашем коде.

Вот небольшой пример.У меня работает нормально:

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
...