Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Не стоит создавать рекурсивные триггера. Т.е., например, триггер after update, в котором выполняется update той же таблицы. В этом случае триггер будет срабатывать рекурсивно до тех пор, пока не закончится память.
SQL> create table test(a number not null);
Table created.
SQL> insert into test(a) values (0);
1 row created.
SQL> create or replace trigger test_aru
2 after update
3 on test
4 for each row
5 begin
6 update test set a = :old.a + 1;
7 end;
8 /
Trigger created.
SQL> update test set a = 1;
update test set a = 1
*
ERROR at line 1:
ORA-04091: table MCHS_TEST.TEST is mutating, trigger/function may not see it
ORA-06512: at "MCHS_TEST.TEST_ARU", line 2
ORA-04088: error during execution of trigger 'MCHS_TEST.TEST_ARU'
Все о триггерах в Oracle