Você pode envolver o corpo do seu evento em um
BEGIN ... END
bloco de instruções compostas: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
Observe que cada instrução deve ser encerrada com um ponto e vírgula, portanto, você deve configurar seu cliente para usar um delimitador de instrução diferente para que ele não pense que o primeiro ponto e vírgula encontrado é o final do
CREATE EVENT
comando (como fazer isso dependerá do seu cliente, mas na ferramenta de linha de comando MySQL
, você pode usar o DELIMITER
comando
e no phpMyAdmin você pode definir o delimitador abaixo da caixa de entrada SQL). Alternativamente, neste caso, você pode usar a tabela múltipla
UPDATE
sintaxe para executar a inicialização da variável de forma que você exija apenas uma única instrução simples: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