Bonjour,
N'étant pas un expert SQL, j'ai besoin d'un coup demain pour la création d'un trigger.
Si je suis ici, c'est que je n'ai pas trouvé d'explication simple pour faire ce que j'ai à faire.
Sur un insert dans la table A, j'ai besoin de mettre à jour une table B avec les infos d'une table C.
En gros, lorsque que j'insère un enregistrement dans la table type_events_tev (la table où je pose le trigger), je doit boucler sur tous les membres qui ont le même NEW.club_id de la table members_mem et faire un insert dans la table de liaison types_events_abonnements_tea.
Je pensais me sortir de cette situation en écrivant ce qui suit mais ça chie partout :-(.
En fonction de ce que je modifie dans le code, la ligne d'erreur change, j'ai l'impression que le NEW n'est pas apprécié.
Je précise que je suis sur une version 5.7 de mySql.
Si qqun peut m'aider à le construire, ça me permettrait de gagner du temps, ou éviter d'en perdre :-). Merci.
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 DELIMITER $$ CREATE TRIGGER t_ins_types_events_tev AFTER INSERT ON types_events_tev FOR EACH ROW BEGIN DECLARE done INT DEFAULT FALSE; DECLARE cur_mem CURSOR FOR SELECT mem_id, clu_id FROM types_events_tev; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- DECLARE @mem_id INT DEFAULT 0; OPEN cur_mem; loopinette: LOOP FETCH cur_mem INTO @mem_id, @clu_id; IF done THEN LEAVE loopinette; END IF; IF NEW.clu_id = clu_id THEN INSERT INTO types_events_abonnements_tea (mem_id, tev_id) VALUES (@mem_id, NEW.tev_id); END IF; END LOOP loopinette; CLOSE cur_mem; END; $$ DELIMITER ;
Partager