2013-02-18 37 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只会使默认的非持久行为显式化。