suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Versuchen Sie, die CASE-/Bedingungsanweisung in einen MySQL-Trigger einzubinden

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粉311089279P粉311089279499 Tage vor1012

Antworte allen(1)Ich werde antworten

  • P粉956441054

    P粉9564410542023-09-12 11:03:52

    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;

    Antwort
    0
  • StornierenAntwort