Какую версию форм вы используете?
Я только что попробовал его на формах 10g, и он работает нормально - триггер вызывается и выполняет свою работу (в моем тесте отображает сообщение).
В любом случае, на всякий случай, если вы не понял, что говорит AP C: переместите код из триггера WNFI в процедуру (не хранимую процедуру в базе данных; создайте ее в узле Программные единицы в Навигаторе объектов). Например:
-- This is P_WNFI procedure; this code was previously in WNFI trigger
message('wnfi');
message('wnfi');
Изменить WHEN-NEW-FORM-INSTANCE
триггер:
-- instead of
-- execute_trigger('WNFI');
-- use
p_wnfi;
Если вы откроете справочную систему Forms и выполните поиск по execute_trigger
, вы увидите заметку:
EXECUTE_TRIGGER
не является предпочтительным методом для выполнения триггера с именем пользователя. Написание пользовательской подпрограммы является предпочтительным методом.
На вашем месте я бы поступил так, как сказал. execute_trigger
может быть здесь для обратной совместимости в течение некоторого времени, но не forever . Кто знает; возможно Oracle корп. делает.