0

私はこのようなトリガーを持っています(会社の規則のために実際の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 などの同様の関数でも同じエラーが発生するようです。誰でもこれに対する回避策を知っていますか?

4

1 に答える 1