Mysql——创建定时事件
程序员文章站
2024-03-17 20:00:22
...
本博客是创建定时事件的实践部分,如果你的基础不好请先补充一下基础知识。这里也推荐一篇博客
Mysql创建定时任务
查看event_scheduler是否开启
命令
show variables like ‘event_scheduler’
或者 select @@event_scheduler;
ON为开启,如果没有开启你可以输入下面命令
set global event_scheduler=1/ON;
如果关闭输入
set global event_scheduler=0/OFF;
创建事件的语法
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
schedule:
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}
①:event_name:定时器名,最大长度64个字符,若未指定,则默认为当前的MySQL用户名(不区分大小写);
②:schedule:决定event的执行时间和频率(注意时间一定要是将来的时间,过去的时间会出错),有两种形式 AT和EVERY;
③:ON COMPLETION [NOT] PRESERVE:可选项,默认是ON COMPLETION NOT PRESERVE 即计划任务执行完毕后自动drop该事件;ON COMPLETION PRESERVE则不会drop掉;
④:sql_statement:要执行的SQL语句(也可以使用存储过程代替传统的SQL语句);
⑤:comment:对该时间调度器的一个注释,最大长度64个字符;
关于event时间设置推荐一个博客mysql创建定时器(event),查看定时器,打开定时器,设置定时器时间
创建事件的例子
先创建了一个简单的数据表
然后创建一个事件,每5秒钟,向products表中插入数据
其中 event_example是事件名字,on schedule后面是时间,do后面是每隔5秒要执行的sql语句
结果
经过一段时间再用count函数来得出插入多少条数据
定时任务开启或关闭
如果你不想删除定时任务,只是想暂停一下,你可以输入一下命令
alter event event_name on completion preserve disable;
例如把刚才创建的事物关闭
开启刚才暂停的事物可以输入一下命令
alter event event_name on completion preserve enable
会发现刚才的事物会继续运行
查看已经创建好的定时任务
命令
show events\G
或者 SELECT * FROM information_schema.events\G;
删除事件
命令
DROP EVENT [IF EXISTS] event_name
推荐阅读