* Bonjour, *
dans un exercice sur les trigger , la question était la suivante :
la BD de l'exercice est la suivante :Ecrire un trigger permettant de gérer automatiquement la quantité en stock des produits par rapport aux commandes.
je vous propose ma solution personnelle à cette question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CLIENT(numcl, nomcl,adr,tel) ; ARTICLE(numart,des_art,pu,qte_stock) COMMANDE(nc,numcl,datecde) LIGNE_COMMANDE(nc,numart,qtecom)
je veux savoir si ma solution est correcte.
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
26
27
28
29
30 CREATE OR REPLACE TRIGGER Tlc2 AFTER DELETE OR INSERT OR UPDATE OF QTE ON LIGNE_COMMANDE FOR EACH ROW BEGIN IF DELETING THEN UPDATE ARTICLE SET QTE_STOCK = QTE_STOCK - :OLD.QTE WHERE NUM_ART = :OLD. NUM_ART; END IF; IF INSERTING THEN UPDATE ARTICLE SET QTE_STOCK = QTE_STOCK + :NEW.QTE WHERE NUM_ART = :NEW. NUM_ART; END IF; IF UPDATING THEN IF :OLD.QTE>:NEW.QTE THEN UPDATE ARTICLE SET QTE_STOCK = QTE_STOCK + (:OLD.QTE-:NEW.QTE) WHERE NUM_ART = :OLD. NUM_ART; END IF; IF :OLD.QTE<:NEW.QTE THEN UPDATE ARTICLE SET QTE_STOCK = QTE_STOCK - (:NEW.QTE-:OLD.QTE) WHERE NUM_ART = :OLD. NUM_ART; END IF; END IF; END;
merci pour votre aide.
Partager