私はこのようなトリガーを持っています(会社の規則のために実際のSQLを表示できず、これは別のマシンからのものです):
create or replace trigger TR_TABLE_X_AU
after update
on TABLE_X
for each row
declare
cursor cursor_select_fk is
select FK_FOR_ANOTHER_TABLE
from TABLE_Y Y, TABLE_Z Z
where :NEW.JOINING_COL = Y.JOINING_COL
and Y.JOINING_COL = Z.JOINING_COL
and :NEW.FILTER_CONDITION_1 = Y.FILTER_CONDITION_1
and :NEW.FILTER_CONDITION_2 = Y.FILTER_CONDITION_2
and :NEW.SOME_DATE_COL = (select max(SOME_DATE_COL)
from TABLE_X
where FILTER_CONDITION_1 = :NEW.FILTER_CONDITION_1
and FILTER_CONDITION_2 = :NEW.FILTER_CONDITION_2)
begin
for rec in cursor_select_fk loop
PCK_SOME_PACKAGE.SOME_PROC(rec.FK_FOR_ANOTHER_TABLE);
end loop;
end TR_TABLE_X_AU;
これは拡張であるため、トリガーが発生しました。最大日付を選択するネストされたクエリが問題の原因のようです。それを sysdate に変更すると、例外は発生しません。TABLE_X のトリガーの実行中に最大日付を取得する方法について何か考えはありますか? ありがとう!
編集: また、count、sum などの同様の関数でも同じエラーが発生するようです。誰でもこれに対する回避策を知っていますか?