Essayez d'encapsuler l'instruction CASE/conditionnelle dans un déclencheur MySQL
P粉311089279
P粉311089279 2023-09-11 20:55:31
0
1
998

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 ?

P粉311089279
P粉311089279

répondre à tous(1)
P粉956441054

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.

UPDATE Players
SET P_Location = CASE WHEN P_Location + NEW.Rolls < 17
                 THEN P_Location + NEW.Rolls
                 ELSE NEW.Rolls - (16 - P_Location)
                 END
WHERE id = NEW.Player_id;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal