2

我使用这个查询在 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; 

它显示开始日期。意味着它不是每天都在运行。

每天如何举办这个活动?我在查询中遗漏了什么?

请帮助解决这个问题,在此先感谢。

4

2 回答 2

10

您需要设置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 只会使默认的非持久行为显式化。

于 2013-02-18T13:06:42.793 回答
0

此特定事件将失败,因为如果您第二次运行该事件中的第一个查询将失败,因为 id 1 已经在数据库中。

于 2021-11-09T23:09:26.413 回答