MySQL-事件调度器

时间调度器是在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查看状态:


ok现在应该已经每隔30秒插入数据了吧,我们去select一下---转折点,并没有按照这个事件插入,为什么?

^^因为event scheduler没有启动,所以该事件不会运行,我们可以查看一下事件调度器状态


而如果要打开需要super_priv权限,我们这里使用root用户将event_scheduler设置为on

set global event_scheduler =on;

如上便已经刚开始执行了,注意我们还应该有event具体内容对应的权限,这里应为event是insert,所以我们还应该有insert权限。


如果事件调度器不再使用,我们可以禁用或者删除掉:

猜你喜欢

转载自blog.csdn.net/m0_37752084/article/details/80142257