想要执行使用MySQL事件功能,需要先开启这个功能:使用这个命令查看下:
show variables like '%event_scheduler%';
如果结果如下则是处于开启状态的,否则需要开启:
创建事件的语法如下:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
1.schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL取值:{YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
单次计划任务: AT 时戳
重复的计划任务 EVERY 时间(单位)的数量 时间单位 [STARTS 时戳][ENDS 时戳]
在两种计划任务中,时戳可以是任意的TIMESTAMP 和DATETIME 数据类型,要求提供的是将来的时间(大于CURRENT_TIMESTAMP),而且小于Unix时间的最后时间(等于或小于'2037-12-31 23:59:59') 时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND
2.[ON COMPLETION [NOT] PRESERVE]
COMPLETION 当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而声明PRESERVE的作用是使事件在执行完毕后不会被Drop掉
3.[ENABLE|DESABLE]
ENABLE 开启事件 DESABLE 关闭事件
4.COMMENT
注释
5.DO sql_statement
执行的sql语句
下面来举几个实例:
CREATE EVENT event_test_daily_total_insert
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(CURDATE()+1,INTERVAL 5 HOUR)
ON COMPLETION PRESERVE
ENABLE
DO CALL test_daily_total_insert;
这里的功能是每天凌晨5点执行test_daily_total_insert这个存储过程。