Bonjour,
J'ai un soucis sur la réalisation d'un trigger.
Je m'explique, j'ai 3 tables, COMMANDE, BL et BL_Ligne.
Une COMMANDE peut avoir plusieurs BL, un BL n'appartient qu'a une COMMANDE.
Un BL peut avoir plusieurs BL_Ligne et un BL_Ligne n'appartient qu'a un BL.
Je souhaite qu'a l'insert, l'update et le delete d'un BL, on vérifie que le BL est valide et que chaque BL_Ligne est Valide aussi.
Pour ça dans chacune des deux tables on à une propriété Valide de type booléen.
Si tous les BL d'une COMMANDE sont "Valide" et que tous les BL_Ligne des BL correspondant sont "Valide" aussi, on considère que COMMANDE est "Soldé".
Soldé est aussi un booléen, dans la table COMMANDE.
Mon trigger doit donc, en ayant à disposition l'Identifiant du BL et celui de la COMMANDE puisqu'il aura lieu au insert/update/delete d'un BL, vérifié que les BL_Lignes qui lui sont rattachés soient tous "Valide" et que le BL lui même soit "Valide".
Il doit de plus chercher tout les autres BL qui correspondent à la COMMANDE, à partir de l'IdCommande. Et donc vérifié de nouveau la validité des BL et des BL_Ligne.
Je sais pas si c'est pas un peu confus ce que je raconte.
Si vous avez des questions, hésité pas.
J'avais fait un petit bout de code complètement faux, mais bon, c'est juste pour vous montrez que j'ai chercher un peu.
Merci d'avance pour toute aide apportée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 BEGIN for each row( SELECT BON_LIVRAISON_LIGNE.Solde FROM BON_LIVRAISON INNER JOIN BON_LIVRAISON_LIGNE ON BON_LIVRAISON_LIGNE.IdBonLivraison = BON_LIVRAISON.IdBonLivraison WHERE BON_LIVRAISON.IdCommande = @IdCOmmande ) IF BON_LIVRAISON_LIGNE.Solde = 0 @Count = 1 end loop; IF @Count = 0 UPDATE COMMANDE SET Commande.Solde = 1 END
Partager