Versuchen Sie, die CASE-/Bedingungsanweisung in einen MySQL-Trigger einzubinden
P粉311089279
P粉311089279 2023-09-11 20:55:31
0
1
974

Ich habe einen Auslöser:

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;

Aber die Syntax ist an manchen Stellen falsch und führt zu Fehlern. Ich habe auf dieser Website nach ähnlichen Fragen gesucht, aber die, die ich mir angesehen habe, schienen Methoden zu verwenden, die in diesem Fall nicht zu funktionieren schienen (insbesondere die Verwendung von IF ). Ich hoffe, die Hauptbedingung ist

IF P_Location + NEW.Rolls < 17 THEN
SET P_Location = P_Location + NEW.Rolls
WHERE id = NEW.Player_id

und der ELSE-Teil ist

SET P_Location = NEW.Rolls - (16 - P_Location)

Im Abzug. Kann mir jemand erklären, wie ich das machen kann?

P粉311089279
P粉311089279

Antworte allen(1)
P粉956441054

CASE 表达式的计算结果必须为标量,但您要通过 CASE 表达式连接其他子句。

您可以这样做,因此 CASE 的结果返回一个标量,并将该标量分配给 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;
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage