誰かがこれを手伝ってくれることを願っています。私はトリガーを初めて使用し、変更されているレコードに特定の値があるかどうかを確認するトリガーを作成しようとしています。
たとえば、filing_id とfiling_status を持つ Filing というテーブルがあり、誰かがそのテーブル内の file_status="FILED" を持つレコードを更新または削除できないようにしたいと考えています。だから私は以下を持っている場合
Filing_id    Filing_status    Val
---------    -------------    ---
0             Filed           X
誰かが Val を変更しようとした場合、トリガーはそれを停止する必要があります。次のトリガーを作成しました。
CREATE or replace TRIGGER TRG_PREV_FILING
  BEFORE DELETE or UPDATE
  ON PF.FILING
  FOR EACH ROW
   declare
     rowcnt number;
   BEGIN
     SELECT COUNT(filing_id) INTO rowcnt FROM PF.FILING 
      where status = 'FILED'
       and  filing_id = :new.filing_id;
     if (rowcnt > 0)
     then
      raise_application_error (-20100, 'You can not delete Or Update initial record');
     end if;
   END;
私が直面している問題は、「テーブルファイリングが変化しています。トリガー/関数が表示されない可能性がある」というORA-04091を取得していることです。
基本的に、トリガーを実行しているテーブルと同じテーブルでクエリを実行することはできませんか? それは私の場合の問題であり、誰かがこれを回避する方法を知っていますか?
どんな助けにも感謝します