查看以下内容。
发出select CURRENT_TIMESTAMP; 或
select count(*) as theCount
from customer_group
where is_status=1 and CURRENT_TIMESTAMP >= end_date;
换句话说,做一些侦察。事件成功或失败,因为它们没有用户界面。
运行一些命令,例如:
show variables where variable_name='event_scheduler';
-- 当前关闭(或者可能是开启)
在创建时指定你的事件的开始时间,并指定ON COMPLETION PRESERVE如
drop event if exists `Every_5_Minutes_QuestionUpdateImport`;
DELIMITER $$
CREATE EVENT `Every_5_Minutes_QuestionUpdateImport`
ON SCHEDULE EVERY 5 MINUTE STARTS '2015-09-01 00:00:00'
ON COMPLETION PRESERVE
DO BEGIN
--
-- all your statements go here
--
END$$
DELIMITER ;
开启事件处理程序:
SET GLOBAL event_scheduler = ON; -- turn her on and confirm below
确认:
show variables where variable_name='event_scheduler';
通过数据库名称检查特定数据库中所有事件的状态:
show events from stackoverflow; -- note stackoverflow is my database name
在当前选定的数据库中按名称禁用或启用某个事件:
ALTER EVENT Every_2_Minutes_QuestionUpdateImport disable;
ALTER EVENT Every_2_Minutes_QuestionUpdateImport enable;
最后但并非最不重要的一点是,当我编写新事件时,我总是首先在事件语句中添加以记录到日志表(使用插入语句和now() 的日期时间)。这样,我知道它被触发了,并且像你这样的 where 子句中的数据可能不会让我对整个事情产生错误的理解。
我的意思是我到处发疯。最初,然后我将其重新整理出来:
set filename:=concat('c:\\datavault\\stackoverflow\\app01\\batches\\processMe_',LPAD(@idToPerform, 8, '0'),'.txt');
set logMsg:=concat("It would appear I am to process this thing: ",filename);
insert EvtsLog(incarnationId,evtName,step,debugMsg,dtWhenLogged)
select incarnationId,evtAlias,10,logMsg,now(); -- 10: some step somewhere in the middle
请记住,出于所有实际目的(除了您的问题中您真正关心的桌子)...我的 EvtsLog 是您作为事件程序员和您最好的朋友的唯一用户界面。
查看手册页了解ON COMPLETION PRESERVE 的含义以及其他内容。