Триггер 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;