2012-12-21 40 views
1

我想創建一個事件,可以做兩個動作,但我不知道如何。 下面是該查詢:phpmyadmin |如何創建一個事件做2個動作

CREATE EVENT rate ON SCHEDULE EVERY 24 HOUR STARTS '2011-12-01 20:00:00' DO SET @p=1 
UPDATE users SET rate = (@p:[email protected]+1) ORDER BY power DESC 

我也試着寫與行動之間,它仍然寫一個錯誤。

的錯誤是:

\#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE users SET rate = (@p:[email protected]+1) ORDER BY power DESC' at line 2 

回答

0

你是你的語句後缺少分號;

試試這個:

CREATE EVENT rate ON SCHEDULE EVERY 24 HOUR STARTS '2011-12-01 20:00:00' 
     DO SET @p=1; 
UPDATE users SET rate = (@p:[email protected]+1) ORDER BY power DESC; 
+0

但現在的phpmyadmin只能看到的第一個動作。 –

+0

@רותםשמחי他們是兩個單獨的查詢。嘗試將它們放在一個程序中,如果這可以爲​​你工作。 – Neal

+0

我該怎麼做?我不知道如何使它成爲一個查詢 –

1

你可以用你的事件的身體在BEGIN ... END複合語句塊:

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 

注意,每個語句必須以分號結束,所以你必須配置您的客戶端使用不同的語句分隔符,以便它不認爲第一次遇到的分號是CREATE EVENT命令的結尾(如何執行此操作將取決於您的客戶端,但在MySQL command line tool中,可以使用DELIMITERcommand和在phpMyAdmin中,您可以在SQL輸入框下面設置分隔符)。

另外,在這種情況下,你可以使用多臺UPDATE語法進行變量的初始化,這樣你只需要一個簡單的聲明:

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 
+0

第一個查詢說錯誤信息。 –

+0

第二個查詢不會說錯誤,但它的工作 –

+0

@רותםשמחי:對於第一個查詢,您是否按照我的答案正文中所述設置了語句分隔符?對於第二個查詢,你能解釋一下「*它不起作用*」是什麼意思嗎? – eggyal

相關問題