Probleme avec mon trigger sous oracle 10g
Résolu
yaobo84
Messages postés
91
Date d'inscription
Statut
Membre
Dernière intervention
-
linux31 Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
linux31 Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voici mes table:
Ligne_Coms (Num_Com ,Num_Pro ,Qte_Com );
Commandes (Num_Com ,Date_Com,Nbre_lc),Mtot_Com,Num_Cli)
Produits ( Num_Pro,Lib_Pro),Prix_U,Qtestock,Seuil_Reapro)
Mon trigger est sensé incrementer nbre_lc,recalculer mtot_com et soustraire qtestock pour chaque ajout d'une nouvelle ligne si la fonction verifier_qtecom(Qte_Com,Num_Pro)==true sinon l'opération d'ajout est annulée.
Voic ce que j'ai essayé:
L'execution de ce trigger me donne cette erreur:
Quelqu'un peut m'aider?
voici mes table:
Ligne_Coms (Num_Com ,Num_Pro ,Qte_Com );
Commandes (Num_Com ,Date_Com,Nbre_lc),Mtot_Com,Num_Cli)
Produits ( Num_Pro,Lib_Pro),Prix_U,Qtestock,Seuil_Reapro)
Mon trigger est sensé incrementer nbre_lc,recalculer mtot_com et soustraire qtestock pour chaque ajout d'une nouvelle ligne si la fonction verifier_qtecom(Qte_Com,Num_Pro)==true sinon l'opération d'ajout est annulée.
Voic ce que j'ai essayé:
CREATE TRIGGER ajoutCommande AFTER INSERT ON Ligne_Coms FOR EACH ROW Vl_Prix_U Produits.Prix_U%TYPE; BEGIN IF (verifier_qtecom(:NEW.Qte_Com,:NEW.Num_Pro)) then UPDATE Produits SET qtestock = qtestock - :new.Qte_Com WHERE Num_Pro = :new.Num_Pro RETURNING Prix_U INTO Vl_Prix_U; UPDATE Commandes SET nbre_lc= nbre_lc+1, Mtot_Com = Mtot_Com + :new.Qte_Com * Vl_Prix_U WHERE Ligne_Coms.Num_Com=Commandes.Num_Com ; ELSE RAISE_APPLICATION_ERROR (-20001, 'Ajout annulé') ; END IF; END;
L'execution de ce trigger me donne cette erreur:
4/3 PL/SQL: SQL Statement ignored 5/92 PL/SQL: ORA-00904: "LIGNE_COMS"."NUM_COM" : identificateur non va lide 7/3 PL/SQL: SQL Statement ignored 8/30 PL/SQL: ORA-00904: "QTE_COM" : identificateur non valide
Quelqu'un peut m'aider?
A voir également:
- Probleme avec mon trigger sous oracle 10g
- Assistant trigger - Guide
- Oracle liste des tables - Forum Oracle
- Oracle jre usage ✓ - Forum Virus
- Oracle 11g download windows 64-bit ✓ - Forum Oracle
- Telecharger oracle virtualbox - Télécharger - Émulation & Virtualisation
6 réponses
Salut,
Au moins il faut :
WHERE :new.Ligne_Coms.Num_Com=Commandes.Num_Com ;
que pour la compréhension j'ecrirai :
WHERE Commandes.Num_Com = :new.Ligne_Coms.Num_Com ;
Au moins il faut :
WHERE :new.Ligne_Coms.Num_Com=Commandes.Num_Com ;
que pour la compréhension j'ecrirai :
WHERE Commandes.Num_Com = :new.Ligne_Coms.Num_Com ;
L'execution du code sous oracle me ressort ceci;
Tandisque show err trigger ajoutcommande me dit qu'il n'ya pa d'erreurs.
Vl_Prix_U Produits.Prix_U%TYPE; * ERREUR à la ligne 5 : ORA-04079: spécification de déclencheur erronée
Tandisque show err trigger ajoutcommande me dit qu'il n'ya pa d'erreurs.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
voici l code:
voici le message après execution:
show err trigger ajoutcommande me donne ceci:
CREATE OR REPLACE TRIGGER ajoutCommande AFTER INSERT ON Ligne_Coms FOR EACH ROW DECLARE Vl_Prix_U Produits.Prix_U%TYPE; BEGIN IF (verifier_qtecom(:NEW.Qte_Com,:NEW.Num_Pro)) then UPDATE Produits SET qtestock = qtestock - :new.Qte_Com WHERE Num_Pro = :new.Num_Pro RETURNING Prix_U INTO Vl_Prix_U; UPDATE Commandes SET nbre_lc= nbre_lc+1, Mtot_Com = Mtot_Com + :new.Qte_Com * Vl_Prix_U WHERE :new.Ligne_Coms.Num_Com=Commandes.Num_Com ; ELSE RAISE_APPLICATION_ERROR (-20001, 'Ajout annulé') ; END IF; END;
voici le message après execution:
Avertissement : Déclencheur créé avec erreurs de compilation.
show err trigger ajoutcommande me donne ceci:
13/9 PLS-00049: variable de lien erronée 'NEW.LIGNE_COMS'