时间调度器是在MySQL5.1后新增的功能,它类似linux下面的任务调度器crontab,在这里可以理解为时间触发器,将数据库按自定义时间周期触发某种操作。
创建事件调度器
CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'string'] DO event_body; schedule: AT timestamp [+ INTERVAL interval] ... | EVERY interval [STARTS timestamp [+ INTERVAL interval] ...] [ENDS timestamp [+ INTERVAL interval] ...] interval: quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
如上是一种格式,事件名称在create event后面指定
通过ON SCHEDULE子句指定事件在何时执行及执行频率
通过DO子句指定要执行的具体操作或事件。
请注意,我们在创建事件调度器需要有event权限,假如我使用普通用户(没有event权限)去创建
我们需要给该用户授予event的权限;
当我们指定definer时候,如果你不具有super权限,唯一允许的用户值是自己,关于definer的更多可以查看我的上一篇文章,这里不再累述
创建好之后我们使用show events\G查看状态:
扫描二维码关注公众号,回复:
1731404 查看本文章
ok现在应该已经每隔30秒插入数据了吧,我们去select一下---转折点,并没有按照这个事件插入,为什么?
^^因为event scheduler没有启动,所以该事件不会运行,我们可以查看一下事件调度器状态
而如果要打开需要super_priv权限,我们这里使用root用户将event_scheduler设置为on
set global event_scheduler =on;
如上便已经刚开始执行了,注意我们还应该有event具体内容对应的权限,这里应为event是insert,所以我们还应该有insert权限。
如果事件调度器不再使用,我们可以禁用或者删除掉: