Обнулить вставку значения в триггер строки - PullRequest
0 голосов
/ 01 марта 2019

У меня проблема с триггером базы данных, в котором я должен обнулить вставленное / обновленное значение (RESULTATOBT), хотя мне нужны переменные OLD / NEW, поэтому я не могу применить это решение(обновление таблицы в триггере таблицы) .

Ошибка является изменяющейся таблицей;из-за изменения таблицы в для каждой строки триггер.

Вот интересующий фрагмент моего кода:

CREATE OR REPLACE TRIGGER VERIF_RESULTATS
  AFTER INSERT OR UPDATE OF RESULTATOBT
  ON PARTICIPATION
  FOR EACH ROW
  FOLLOWS VERIF_PARTICIPATION
  WHEN ( NEW.RESULTATOBT IS NOT NULL )
BEGIN 
  UPDATE PARTICIPATION p
  SET RESULTATOBT = NULL
  WHERE p.CDPERS = :NEW.CDPERS
    AND p.CDCOMPET = :NEW.CDCOMPET;
END;
/

Заранее благодарю за помощь.

NB. Я относительно новый участник, поэтому мне могут потребоваться дополнительные советы / изменения, если мой вопрос не соответствует нужному формату.

1 Ответ

0 голосов
/ 01 марта 2019

Используйте триггер before и просто присвойте NULL:

CREATE OR REPLACE TRIGGER VERIF_RESULTATS
  <b>BEFORE</b> INSERT OR UPDATE OF RESULTATOBT
  ON PARTICIPATION
  FOR EACH ROW
  WHEN ( NEW.RESULTATOBT IS NOT NULL )
BEGIN 
  :new.RESULTATOBT := NULL;
END;
/
...