J'ai un déclencheur :
CREATE TRIGGER Moves AFTER INSERT ON Rolls FOR EACH ROW UPDATE Players CASE WHEN P_Location + NEW.Rolls < 17 THEN SET P_Location = P_Location + NEW.Rolls WHERE id = NEW.Player_id ELSE SET P_Location = NEW.Rolls - (16 - P_Location) END;
Mais la syntaxe est incorrecte à certains endroits et génère des erreurs. J'ai vérifié des questions similaires sur ce site, mais celles que j'ai consultées semblaient utiliser des méthodes qui ne semblaient pas fonctionner dans ce cas (en particulier en utilisant IF
). J'espère que la condition principale est
IF P_Location + NEW.Rolls < 17 THEN SET P_Location = P_Location + NEW.Rolls WHERE id = NEW.Player_id
et la partie ELSE
est
SET P_Location = NEW.Rolls - (16 - P_Location)
Dans la gâchette. Quelqu'un peut-il expliquer comment je peux faire cela ?
L'expression CASE doit être évaluée comme un scalaire, mais vous connectez d'autres clauses via l'expression CASE.
Vous pouvez le faire pour que le résultat de CASE renvoie un scalaire et attribue ce scalaire à la colonne P_Location.