Неверный синтаксис триггера.
Попробуйте:
create or replace trigger update_sal
before insert on sala
for each row
begin
if :new.salary is not null then
:new.salary := :new.salary + 100;
end if;
end;
Ключевые моменты:
- Невозможно обновить ту же таблицу, что итриггер включен - это вызывает ошибку таблицы мутаций .Способ сделать это - присвоить значение напрямую, как показано выше.
- Нельзя изменить значение
:NEW
в триггере after
.Вы можете сделать это в триггере before
. - Псевдозапись начинается с двоеточия, как
:NEW
После добавления этого триггера, вот результат:
insert into sala values(700);
select * from sala;
800