Bonjour
Je souhaite créer un trigger sous ORACLE qui met a jour le stock(quantité) dans la table produit après une insertion d'une ligne dans la table commande. le code sql est :
Table produit:
la table commande:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE TABLE `produit_` ( `idproduit` INT(11) NOT NULL AUTO_INCREMENT, `nom_produit` VARCHAR(50) NOT NULL DEFAULT '0', `quantite` INT(4) UNSIGNED ZEROFILL NOT NULL DEFAULT '0000', `prix_unitaire` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`idproduit`) ) COLLATE='utf8mb4_0900_ai_ci' ENGINE=InnoDB AUTO_INCREMENT=11 ;
Le trigger que j'ai créée est :
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 CREATE TABLE `commande` ( `idcommande` INT(11) NOT NULL AUTO_INCREMENT, `idperso` INT(11) NOT NULL, `quantiteComm` INT(4) UNSIGNED ZEROFILL NOT NULL, `idprod` INT(11) NOT NULL DEFAULT '0', `datecomm` VARCHAR(50) NOT NULL DEFAULT '0', PRIMARY KEY (`idcommande`, `idperso`, `idprod`), INDEX `FK_commande_personnes` (`idperso`), INDEX `FK_commande_produit_` (`idprod`), CONSTRAINT `FK_commande_personnes` FOREIGN KEY (`idperso`) REFERENCES `personnes` (`Idpersonne`), CONSTRAINT `FK_commande_produit_` FOREIGN KEY (`idprod`) REFERENCES `produit_` (`idproduit`) ) COLLATE='utf8mb4_0900_ai_ci' ENGINE=InnoDB AUTO_INCREMENT=7 ;
Je souhaite de l'aide de quelq'un ? Un grand merci d'avance pour les aide futur.
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 create trigger stockage after insert on commande for each row Begin select commande.quantiteComm , produit_.quantite from commande, produit_ where (commande.idcommande= LAST_INSERT_ID() and produit_.idproduit= commande.idprod) ; if (produit_.quantite>commande.quantiteComm) then update on produit_ p set p.quantite = p.quantite -commande.quantiteComm where commande.idcommande= LAST_INSERT_ID() and p.idproduit = commande.idprod; end if; END; /
Partager