Bonjour à tous,

Voilà mon trigger :

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
delimiter // 
CREATE TRIGGER t_messages_trig_insert BEFORE INSERT ON t_messages 
FOR EACH ROW 
BEGIN 
 
DECLARE nbMsg, admin integer;
 
UPDATE s_personnages
SET nbTest = nbTest + 30, nbTotalTest = nbTotalTest + 30
WHERE idUtilisateur = NEW.idComptePrin;
 
SELECT count(*), p.admin into @nbMsg, @admin 
FROM t_messages m, s_personnages p
WHERE p.idUtilisateur = m.idComptePrincipal
AND idComptePrincipal = NEW.idComptePrincipal;
 
IF @nbMsg > 50 THEN
UPDATE s_personnages
SET test2 = test2 + 5
WHERE idUtilisateur = NEW.idComptePrin;
ELSEIF @admin=0 THEN
UPDATE s_personnages
SET test1 = test1 + 5
WHERE idUtilisateur = NEW.idComptePrin;
END IF;
 
END// 
delimiter ;
Le update (première requête) est OK.

J'ai l'impression que c'est la seconde requête qui plante, que les valeurs attribuées aux variables ne sont pas les bonnes... Pourtant lorsque je fais la requête directement en sql, elle me donne le résultat souhaité. Le résultat souhaité respecte la condition du IF et du ELSEIF et pourtant, aucune des 2 requêtes n'est appliquée. Si je mets un ELSE, c'est la requête du else qui est appliquée....

Pourtant, j'ai trouvé partout que c'était bien ainsi qu'on attribuait une valeur à une variable...

J'ai vraiment l'impression de tourner en rond, alors si la solution vous saute aux yeux, donnez-moi quelques indications.

Merci à vous !