delimiter //
-- 确保服务器事件计划开启 set global event_scheduler=1
-- 创建定时任务 like job
create event if not exists e_execut_publish_status
on schedule every 1 day starts '2015-09-02 01:01:01'
comment '定时任务:每天0点执行,更新t_publish表的c_status'
do
begin
call sp_auto_update_publish_status();
end//
delimiter ;
1 mysql在5.x版本后支持自动定时任务功能
2 设置开启定时任务: set global event_scheduler=1
设置方法A: mysql命令行输入 set global event_scheduler=1
B:在配置文件my.cnf(linux环境)中,[mysqld] 下添加event_scheduler=1/on
3 查看定时任务
查看定时任务是否已经开启: show variables like ‘%event%’;
查看目前系统的定时任务: show processlist/show events;
查看定时任务创建语句:show create event event_name;
4 语法分析
语法:CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT ‘comment’]
DO sql_statement;
说明:event_name :创建的event名字(唯一确定的);
ON SCHEDULE:计划任务
schedule: 决定event的执行时间和频率(注意时间一定要是将来的时间,过去的时间会出错),有两种形式 AT和EVERY
AT timestamp [+ INTERVAL interval] | EVERY interval [STARTS timestamp] [ENDS timestamp]
interval: quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
[ON COMPLETION [NOT] PRESERVE]: 可选项,默认是ON COMPLETION NOT PRESERVE 即计划任务执行完毕后自动drop该事件;ON COMPLETION PRESERVE则不会drop掉 ;
[COMMENT ‘comment’] :可选项,comment 用来描述event;相当注释,最大长度64个字节
[ENABLE | DISABLE] :设定event的状态,默认ENABLE:表示系统尝试执行这个事件, DISABLE:关闭该事情,可以用alter修改