在开发中,我们可能会遇到这样的需求,每天晚上让数据库对某些数据进行定时的维护,这也就是为什么有的系统在某一个时间段是不能使用的。要使用定时这个功能,也就要用到时间(也可以叫做作业),在某一时间段执行一批SQ了语句。
对于事件的定义,是针对于某一个数据库,事件的触发和执行过程是由DBMS自动执行的,事件定义完成以后,然后开启事件,剩下的工作就交给数据库去维护数据了。
事件的定义格式
DELIMITER $$
-- SET GLOBAL event_scheduler = ON$$ -- required for event to execute but not create
CREATE /*[DEFINER = { user | CURRENT_USER }]*/ EVENT `demo`.`cuifei_event`/*事件名称*/
ON SCHEDULE
/* uncomment the example below you want to use */
-- scheduleexample 1: run once
/*
AT这个格式可以指定是某个时间段要去执行
EVERY 为每隔多长时间去执行,时间单位可以为[HOUR|MONTH|WEEK|DAY|MINUTE|...]
STARTS 指定开始时间
ENDS 指定结束时间
*/
-- AT 'YYYY-MM-DD HH:MM.SS'/CURRENT_TIMESTAMP { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }
-- scheduleexample 2: run at intervals forever after creation
-- EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
-- scheduleexample 3: specified start time, end time and interval for execution
/*EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
STARTS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1[HOUR|MONTH|WEEK|DAY|MINUTE|...] }
ENDS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] } */
EVERY 5 SECOND
STARTS CURRENT_TIMESTAMP
ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
/*[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']*/
DO
BEGIN
/*这里写要执行的SQL语句,我在这里调用的是我自己写好的存储过程*/
CALL cuifei_cur();
END$$
DELIMITER ;