我使用此查询在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 ;
当我第一次运行它时它工作正常并且没有显示任何错误。正如我所询问的那样,这一事件将每天都在进行。但它并不是每天都在运行。
当我查看时:
select name, last_executed from mysql.event;
显示开始日期。意味着它不是每天都在运行。
如何每天举办此活动?我在查询中遗漏了什么?
请提前感谢帮助解决这个问题。
答案 0 :(得分:8)
您需要设置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
通常,一旦事件过期,它会立即被删除。您可以通过指定ON COMPLETION PRESERVE来覆盖此行为。使用ON COMPLETION NOT PRESERVE只会使默认的非持久行为显式化。