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权限。


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值