Bonjour,
J'ai voulu créer un trigger qui calcule le nouveau prix ttc d'un produit quand le produit reçois une promotion (id_promo).
Malheureusement je galère totalement étant un plus que novice en SQL, j'ai déjà pas mal cherché sur le net, mais aucun post n'a pu m'aider.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 delimiter // CREATE TRIGGER TTC_PROMO_UPDATE BEFORE UPDATE ON produit FOR EACH ROW BEGIN UPDATE produit,promotion SET produit.prix_ttc_p = ((produit.prix_ht_p*(100 - promotion.taux)/100)*(1+(produit.tva_p/100)) ) WHERE promotion.id_promo = produit.id_promo; END; // delimiter ; Erreur : ERROR 1442 (HY000): Can't update table 'produit' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. mysql> DESC produit; +---------------+--------------+------+-----+---------+----------------+ | FIELD | TYPE | NULL | KEY | DEFAULT | Extra | +---------------+--------------+------+-----+---------+----------------+ | id_p | INT(11) | NO | PRI | NULL | AUTO_INCREMENT | | ref_p | INT(11) | NO | | NULL | | | nom_p | VARCHAR(100) | YES | | NULL | | | tva_p | FLOAT | YES | | NULL | | | prix_ht_p | FLOAT | YES | | NULL | | | quantite_p | INT(6) | YES | | NULL | | | marque_p | VARCHAR(100) | YES | | NULL | | | dimension_p | VARCHAR(100) | YES | | NULL | | | poid_p | VARCHAR(100) | YES | | NULL | | | img_p | VARCHAR(100) | YES | | NULL | | | designation_p | text | YES | | NULL | | | id_sc | INT(11) | YES | MUL | NULL | | | id_promo | INT(10) | YES | MUL | NULL | | | prix_ttc_p | FLOAT | YES | | NULL | | +---------------+--------------+------+-----+---------+----------------+ 14 ROWS IN SET (0.01 sec) mysql> DESC promotion; +----------+---------+------+-----+---------+----------------+ | FIELD | TYPE | NULL | KEY | DEFAULT | Extra | +----------+---------+------+-----+---------+----------------+ | id_promo | INT(11) | NO | PRI | NULL | AUTO_INCREMENT | | taux | FLOAT | YES | | NULL | | | date_deb | DATE | YES | | NULL | | | date_fin | DATE | YES | | NULL | | +----------+---------+------+-----+---------+----------------+ 4 ROWS IN SET (0.01 sec)
Partager