Création
d'entreprise
Posez votre question Signaler

Probleme avec mon trigger sous oracle 10g [Résolu]

yaobo84 72Messages postés 20 février 2009Date d'inscription 28 novembre 2011Dernière intervention - Dernière réponse le 7 déc. 2011 à 16:43
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é:
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?
Lire la suite 

Probleme avec mon trigger sous oracle 10g »

7 réponses
Réponse
+1
moins plus
Pourrais tu poster la solution? que tous le monde puisse en tirer bénéfice
Ajouter un commentaire
Réponse
+0
moins plus
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 ;

Ajouter un commentaire
Réponse
+0
moins plus
L'execution du code sous oracle me ressort ceci;
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.
Ajouter un commentaire
Réponse
+0
moins plus
Parce qu'il faut avant un titre de paragraphe :

DECLARE
Vl_Prix_U Produits.Prix_U%TYPE;
BEGIN
...

Ajouter un commentaire
Réponse
+0
moins plus
voici l code:
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' 
jee pee- 14 nov. 2011 à 10:03
bah faut essayer :new.Num_Com à la place de :new.Ligne_Coms.Num_Com
Ajouter un commentaire
Réponse
+0
moins plus
meci probleme resolu!!!!!
Ajouter un commentaire
Ce document intitulé « probleme avec mon trigger sous oracle 10g » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?