Я хочу выполнить функцию после операции вставки, которая обращается к недавно вставленным данным, вызывая другую функцию. Вот почему я не могу использовать триггер после вставки. Так как внутренняя функция не обращается к данным с помощью «: new». Есть ли способ сначала вставить вставку в зависимости от триггера, а затем выполнить функцию?Функция, которая выполняется после вставки
trigger insert_to_A after insert on tableX for each row
begin
insert into tableA values (function1(:new.field1));
end;
create or replace function function1(abc number) return number as
begin
select nvl(field1,-1)
into nMax1
from tableX
where field1= abc;
end;
Итак, функция1 пытается получить доступ к таблице X в своем теле, и я считаю, что это проблема. Я надеюсь, что это очистит.
Не могли бы вы рассказать подробнее. Неясно, каково ваше точное требование. Вы хотите, чтобы вставленные строки обрабатывали его по-другому? Если да, вы можете использовать предложение «ВОЗВРАТ В ИНТ». Взгляните на пример здесь http://lalitkumarb.com/2015/04/07/returning-the-sequence-number-of-identity-column-after-insert/ –
Я не думаю, что это имеет отношение к тому, что Я пытался каким-то образом объяснить. Я хочу выполнить функцию после операции вставки. Но я хочу это так, чтобы операция вставки и триггер не выполнялись атомным способом. я хочу сначала выполнить операцию вставки, чтобы я мог запускать функцию в новом состоянии таблицы (с вставленными новыми строками) без использования ключевого слова «: new». Надеюсь, что это станет немного более ясным. – Sammy
Возможно, пример будет лучше. Если вы можете ** изменить свой вопрос и добавить тестовый пример **. Я все еще путаю поток вашего процесса. Триггер уже на столе что-то делает? Какие функции будут делать? –