Триггер Oracle SQL при обновлении столбца

Я пытаюсь создать триггер для моей таблицы, который автоматически добавляет опубликованную дату на основе того, когда определенный флаг установлен на "Y"

У меня нет большого опыта создания триггеров, но до сих пор это то, что у меня есть

  create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  BEGIN
  :new.create_dt := sysdate where approved = 'Y';
  END;

Я получаю эту ошибку при обновлении столбца

trigger 'USER.ADD_CREATE_DT' недействителен и не удалось выполнить повторную проверку

Любые идеи?

Спасибо

Ответ 1

Используйте предложение WHEN:

create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  when (new.approved = 'Y')
  BEGIN
  :new.create_dt := sysdate;
  END;

Или используйте IF:

create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  BEGIN
  if :new.approved = 'Y' then
   :new.create_dt := sysdate;
  end if;
  END;

В этом случае WHEN является более подходящим и эффективным.

Ответ 2

create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  BEGIN
    IF :NEW.approved = 'Y' THEN
      :new.create_dt := sysdate;
    END IF;
  END;