Sie können den Hauptteil Ihres Ereignisses in einen BEGIN ... END
zusammengesetzter Anweisungsblock:
CREATE EVENT rate ON SCHEDULE EVERY 24 HOUR STARTS '2011-12-01 20:00:00' DO BEGIN
SET @p=1;
UPDATE users SET rate = (@p:[email protected]+1) ORDER BY power DESC;
END
Beachten Sie, dass jede Anweisung mit einem Semikolon abgeschlossen werden muss, also müssen Sie Ihren Client so konfigurieren, dass er ein anderes Anweisungstrennzeichen verwendet, damit er nicht denkt, dass das erste Semikolon das Ende von CREATE EVENT
ist Befehl (wie das geht, hängt von Ihrem Client ab, aber im MySQL-Befehlszeilentool
, können Sie das DELIMITER
verwenden Befehl
und in phpMyAdmin können Sie das Trennzeichen unterhalb des SQL-Eingabefelds setzen).
Alternativ können Sie in diesem Fall das multiple-table UPDATE
verwenden Syntax, um eine Variableninitialisierung durchzuführen, sodass Sie nur eine einzige einfache Anweisung benötigen:
CREATE EVENT rate ON SCHEDULE EVERY 24 HOUR STARTS '2011-12-01 20:00:00' DO
UPDATE users, (SELECT @p:=0) init
SET users.rate = (@p:[email protected]+1)
ORDER BY users.power DESC