2013-02-18 51 views
1

運行後:MySQL的事件是不是我創建使用此查詢在MySQL事件的時間間隔

delimiter $$ 
create event update_usability_score 
on schedule every 1 day 
starts '2013-01-07 18:22:00' 
    do 
begin 
insert into table_name(pk_id,name) values(1,"testing"); 

update table table_name set name = 'Not testing' where name like '%testing%'; 
end// 
delimiter ; 

當我運行此爲第1次它的正常工作,並沒有表現出任何差錯。正如我所質疑的,這個事件每天都會發生。但它並不是每天都在運行。

當我檢查這個:

select name, last_executed from mysql.event; 

它顯示的開始日期。意味着它不是每天都在運行。

如何每天運行此事件?我在查詢中錯過了什麼?

請幫忙解決這個問題,提前致謝。

+0

你混淆了你的分隔符,你知道的,對嗎? – 2013-02-18 13:05:10

回答

6

您需要設置ON COMPLETION PRESERVE選項:

CREATE EVENT update_usability_score 
    ON SCHEDULE EVERY 1 DAY 
    STARTS '2013-01-07 18:22:00' 
    ON COMPLETION PRESERVE 
DO 
BEGIN 
    ... 
END 

event documentation

通常情況下,一旦事件已過期,它將立即刪除。您可以通過指定ON COMPLETION PRESERVE來覆蓋此行爲。使用ON COMPLETION NOT PRESERVE只會使默認的非持久行爲顯式化。