"Как это исправить с помощью триггеров? (Нельзя использовать хранимую процедуру и
хотел бы избежать использования запланированного задания). "
Нет способа сделать это, используя только триггеры.
Вы не можете использовать триггеры уровня строки, потому что, как вы обнаружили, select выбрасывает исключение изменяющейся таблицы.
Вы не можете использовать триггеры уровня таблицы, потому что мы не можем ссылаться на: NEW или: OLD значения в них.
Можно передать значения: NEW или: OLD в триггер уровня таблицы, заполнив переменную пространства имен в триггерах уровня строки, но для контекстов требуется хранимая процедура, которую, как вы говорите, не можете создать.
Как насчет стола? Вам разрешат создать таблицу для передачи затронутого идентификатора?
Но это слишком затратно, просто чтобы реализовать неприятную часть функциональности. Исключение ORA-04091 почти всегда указывает на недостаток модели данных, и это, безусловно, имеет место в данном случае.