1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
CREATE OR REPLACE FUNCTION commande () RETURNS TRIGGER AS '
DECLARE curseur CURSOR FOR SELECT id_produit, quantite_panier, quantite_produit, prix_produit FROM PANIER NATURAL JOIN PRODUIT WHERE id_utilisateur = NEW.id_utilisateur;
idpro "public"."produit"."id_produit"%TYPE;
qte "public"."panier"."quantite_panier"%TYPE;
qteold "public"."produit"."quantite_produit"%TYPE;
prix "public"."produit"."prix_produit"%TYPE;
BEGIN
OPEN curseur;
FETCH curseur INTO idpro, qte, qteold, prix;
WHILE FOUND LOOP
INSERT INTO LIGNECOMMANDE( id_produit, id_commande, prix_lignecommande, qte_lignecommande) VALUES (idpro, NEW.id_commande, prix, qte);
UPDATE PRODUIT SET quantite_produit = qteold - qte;
FETCH curseur INTO idpro, qte, qteold, prix;
END LOOP;
CLOSE curseur;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER commande AFTER INSERT ON COMMANDE
FOR EACH ROW EXECUTE PROCEDURE commande(); |
Partager