2011-06-04 76 views
2

我必須編寫一個需要創建事件的存儲過程。由於存儲過程調用取決於觸發的操作,因此需要爲創建的事件提供不同的名稱。使用動態事件名稱創建MySQL事件

CREATE EVENT variable 
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE 
    DO 
    Insert into dummy ('abc'); 

變量名稱需要是一個動態變量,但是mysql不允許我從存儲過程中這樣做。這怎麼能實現?

回答

0

這是在MySQL 不可能,這樣的:

PREPARE stmt_name FROM CONCAT(CREATE EVENT ",@variable 
    ,"ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE " 
    ,"DO Insert into dummy (test) VALUES (?);" 

SET @test_parm = "abc"; 

EXECUTE stmt_name USING @test_parm; 
DEALLOCATE PREPARE stmt_name; 

不起作用,因爲你不能這樣做,在一份準備好的聲明。

請參閱:http://dev.mysql.com/doc/refman/5.5/en/sql-syntax-prepared-statements.html

+0

您確定創建事件可以使用prepare來運行嗎?我嘗試了相同的,我得到了錯誤'在準備好的語句協議中不支持此命令'。我猜這些文件也說準備陳述僅限於某一套DML。 – 2011-06-04 15:34:05

+0

@Maxim,你是對的,請看:http://dev.mysql.com/doc/refman/5.5/en/sql-syntax-prepared-statements.html – Johan 2011-06-04 16:44:23