Comment interroger et exécuter le déclencheur sur la même table

Espère que quelqu'un peut aider avec ceci. Je suis nouveau à des déclencheurs et je suis en train de créer un déclencheur qui vérifie si l'enregistrement en cours de modification a une valeur spécifique.

exemple
J'ai une table appelée Dépôt qui a un filing_id et un filing_status, je veux éviter que quelqu'un de la mise à jour ou la suppression de tous les enregistrements dans cette table a un filing_status="DÉPOSÉE".
donc, si j'ai le texte suivant

Filing_id    Filing_status    Val
---------    -------------    ---
0             Filed           X

Si quelqu'un a essayé de modifier le Val le déclencheur doit l'arrêter
J'ai créé le déclencheur suivant:

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;

Le problème, je suis confronté est que j'obtiens:ORA-04091 qui est le "Tableau de Dépôt est de muter, de Déclenchement et de fonction ne peuvent pas le voir"

Donc, fondamentalement, je ne permet pas d'interroger sur la même table que je suis d'exécution sur la gâchette? C'est que le problème dans mon cas et que quelqu'un connait un travail autour de cela?

J'apprécie toute l'aide

InformationsquelleAutor user955165 | 2012-10-05