Partage
  • Partager sur Facebook
  • Partager sur Twitter

Trigger - Invalid identifier

Sujet résolu
    12 septembre 2019 à 18:57:37

    Bonsoir !

    Alors voilà j'ai un code PL-SQL mais j'en n'arrive pas à le compiler correctement mon erreur viens des lignes suivantes :

    SELECT nationalite INTO vNatArbitre FROM Arbitre WHERE NewArbitre.numArbitre = Arbitre.numArbitre;
        SELECT codeEquipeR INTO vCodeEquipeR FROM Matchs WHERE NewArbitre.numMatch = Matchs.numMatch;
        SELECT codeEquipeD INTO vCodeEquipeD FROM Matchs WHERE NewArbitre.numMatch = Matchs.numMatch;

    Mais je ne comprend pas et trouve pas mon erreur

    Merci de votre aide !

    Le code entier :

    CREATE OR REPLACE TRIGGER verifierNatArbitre
      BEFORE INSERT ON Arbitrer
      REFERENCING NEW AS NewArbitre
      FOR EACH ROW
      DECLARE
       vNatArbitre VARCHAR2(50);
       vPaysEquipeR VARCHAR2(50);
       vPaysEquipeD VARCHAR2(50);
       vCodeEquipeR VARCHAR2(4);
       vCodeEquipeD VARCHAR2(4);
      BEGIN
        SELECT nationalite INTO vNatArbitre FROM Arbitre WHERE NewArbitre.numArbitre = Arbitre.numArbitre;
        SELECT codeEquipeR INTO vCodeEquipeR FROM Matchs WHERE NewArbitre.numMatch = Matchs.numMatch;
        SELECT codeEquipeD INTO vCodeEquipeD FROM Matchs WHERE NewArbitre.numMatch = Matchs.numMatch;
        SELECT pays INTO vPaysEquipeR FROM Equipe WHERE codeEquipe = vCodeEquipeR;
        SELECT pays INTO vPaysEquipeD FROM Equipe WHERE codeEquipe = vCodeEquipeD;
        IF vNatArbitre = vPaysEquipeR OR vNatArbitre = vPaysEquipeD THEN
            raise_application_error('-20001', 'L''arbitre ne doit pas avoir la nationalité d''une des équipes');
        END IF;
      END;
    /

    Erreur :

    PL/SQL: SQL Statement ignored
    PL/SQL: ORA-00904: "NEW"."NUMARBITRE": invalid identifier
    PL/SQL: SQL Statement ignored
    PL/SQL: ORA-00904: "NEW"."NUMMATCH": invalid identifier
    PL/SQL: SQL Statement ignored
    PL/SQL: ORA-00904: "NEW"."NUMMATCH": invalid identifier




    • Partager sur Facebook
    • Partager sur Twitter
      13 septembre 2019 à 9:10:34

      Bonjour,

      Je ne connais pas bien Oracle, mais c'est le référencement qui semble poser problème ...

      Si tu essayes sans :

      CREATE OR REPLACE TRIGGER verifierNatArbitre
      BEFORE INSERT ON Arbitrer
      FOR EACH ROW
      DECLARE
      	vNatArbitre VARCHAR2(50);
      	vPaysEquipeR VARCHAR2(50);
      	vPaysEquipeD VARCHAR2(50);
      	vCodeEquipeR VARCHAR2(4);
      	vCodeEquipeD VARCHAR2(4);
      BEGIN
      	SELECT nationalite INTO vNatArbitre FROM Arbitre WHERE :NEW.numArbitre = Arbitre.numArbitre;
      	SELECT codeEquipeR INTO vCodeEquipeR FROM Matchs WHERE :NEW.numMatch = Matchs.numMatch;
      	SELECT codeEquipeD INTO vCodeEquipeD FROM Matchs WHERE :NEW.numMatch = Matchs.numMatch;
      	SELECT pays INTO vPaysEquipeR FROM Equipe WHERE codeEquipe = vCodeEquipeR;
      	SELECT pays INTO vPaysEquipeD FROM Equipe WHERE codeEquipe = vCodeEquipeD;
      	IF vNatArbitre = vPaysEquipeR OR vNatArbitre = vPaysEquipeD THEN
      		raise_application_error('-20001', 'L''arbitre ne doit pas avoir la nationalité d''une des équipes');
      	END IF;
      END
      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        13 septembre 2019 à 20:06:18

        Merci pour ta réponse, en fait le problème venait de DataGrip, ton code fonctionne très bien via SQL Plus
        • Partager sur Facebook
        • Partager sur Twitter

        Trigger - Invalid identifier

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown