IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Erreur ORA-04082 sur un trigger [FAQ]


Sujet :

Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Erreur ORA-04082 sur un trigger
    bonjour a tous,
    Je suis en train d'écrire un trigger mais je me heurte a une erreur que j'ai du mal a à résoudre alors si vous pouviez m'aider ce serait cool.
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    create or replace trigger check_insc
    before insert or update on inscription
    declare 
    prerequis prerequis.codmodprereq%type;
    notemin prerequis.notprereq;
    nbexam number(10);
    Begin
    select codmodprereq,noteprereq into prerequis,notemin from prerequis where codmod=:new.codmod;
    if not(:new.numetud in (select numetud from inscription where comod=prerequis and 
     
    numetud=:new.numetud)) then
         raise_application_error(-20001,'l'etudiant n'a pas été inscit au module prerequis dc n'as 
     
    pas été reçu');
    end if;
    select count(*) into nbexam from examen where codmod=prerequis;
    if (select count(*) from resultat where numetud=:new.numetud and codmod=prerequis) < nbexam then
         raise_application_error(-20002,'l'étudiant n'a pas passé ts ses exam');
    end if;
    select avg(notre) into moy from resultat where numetud=:new.numetud and codmod:=prerequis);
    if (moy<notemin) then 
          raise_application_error(-20003,'l'étudiant ne peut etre inscrit, il n'a pas été reçu au 
     
    module prerequis');
    end if;
    et voici l'erreur:
    create or replace trigger check_insc
    *
    ERROR at line 1:

    ORA-04082: NEW or OLD references not allowed in table level triggers
    Merçi de votre aide!

    [Modération : titre et message edité par LeoAnderson]

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Oui, on peut faire du create or replace trigger !

    Le problème est tout autre : vous avez fait un statement trigger et non un row trigger !
    il faut rajouter "FOR EACH ROW" pour que les variables :NEW et :OLD aient un sens !

    Si on fait un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Update inscription SET ..  WHERE ...
    Et que l'ordre ci-dessus impacte 5000 lignes, un trigger "FOR EACH ROW" sera appellé 5000 fois, tandis qu'un statement trigger ne sera appellé qu'une seule fois car il n'y a eu qu'une seule instruction.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    merçi bcp anderson. cette errreur n'est plus grace a vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur ora-04052 sur trigger à l'import
    Par pascal_T dans le forum Import/Export
    Réponses: 4
    Dernier message: 22/06/2009, 10h23
  2. Erreur ORA-04031 sur connexion sqlplus
    Par bigorj dans le forum Connexions aux bases de données
    Réponses: 9
    Dernier message: 28/08/2007, 12h18
  3. Erreur ORA-12560 sur un Export
    Par genio dans le forum Oracle
    Réponses: 6
    Dernier message: 16/01/2006, 17h21
  4. Erreur ORA-01555 sur un select
    Par LRI dans le forum Oracle
    Réponses: 2
    Dernier message: 13/05/2005, 10h42
  5. Erreur ORA-01036 sur un XMLGRAM
    Par sch dans le forum XMLRAD
    Réponses: 5
    Dernier message: 07/09/2004, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo