* Bonjour, *

dans un exercice sur les trigger , la question était la suivante :


Ecrire un trigger permettant de gérer automatiquement la quantité en stock des produits par rapport aux commandes.
la BD de l'exercice est la suivante :

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 vous propose ma solution personnelle à cette question :

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;
je veux savoir si ma solution est correcte.
merci pour votre aide.