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?
CASE 表达式的计算结果必须为标量,但您要通过 CASE 表达式连接其他子句。
您可以这样做,因此 CASE 的结果返回一个标量,并将该标量分配给 P_Location 列。