mysql中的事件计划(event scheduler)

事件计划是mysql中的对象,其中的sql语句会由经过特定时间段来触发。按照官方文档上的说明,这个概念与'时间触发器(temperal trigger)'是有区别的。从根本上来说evnet scheduler是对特定时间段的响应,而trigger是对特定表上发生的特定事件的响应。
事件计划在sql标准中并没有定义,但是在其他数据库中可以看到类似的概念。mysql中的事件有一下一些主要的特征:
1. mysql中的事件由名称和其所处的数据库唯一确定
2. mysql中的事件是按照时间表运行的动作。动作的定义如果有需要可以使用复合语句begin...end。事件的时间可以是一次性的,也可以是周期性的。周期性的事件可以定义开始日期时间,结束日期时间。默认的程序从创建完成开始周期性运行,不会自动结束,直到该程序被禁用或者删除。如果在一个周期内程序没有正常运行结束,会在同一时间有几个程序实例运行。
3. 用户能用sql语句创建,修改和删除事件,事件中若有语法问题,mysql会报错。
4. 事件的性质可以用sql语句来设置和修改,这些性质包括:事件名,时间, 过期后是否保留, 状态, 执行的动作, 所在数据库。(alter event)
5. 事件动作可以包含存储过程,函数,触发器中的大部分语句。

1 创建

    CREATE
        [DEFINER = { user | CURRENT_USER }]
        EVENT
        [IF NOT EXISTS]
        event_name
        ON SCHEDULE schedule
        [ON COMPLETION [NOT] PRESERVE]
        [ENABLE | DISABLE | DISABLE ON SLAVE]
        [COMMENT 'comment']
        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}

示例:

    ## 创建一次性计划
    REATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
      UPDATE myschema.mytable SET mycol = mycol + 1;

    ## 周期性计划
    CREATE EVENT e_hourly
    ON SCHEDULE
      EVERY 1 HOUR
    COMMENT 'Clears out sessions table each hour.'
    DO
      DELETE FROM site_activity.sessions;

2 修改

    ALTER
        [DEFINER = { user | CURRENT_USER }]
        EVENT event_name
        [ON SCHEDULE schedule]
        [ON COMPLETION [NOT] PRESERVE]
        [RENAME TO new_event_name]
        [ENABLE | DISABLE | DISABLE ON SLAVE]
        [COMMENT 'comment']
        [DO event_body]

3 删除

    DROP EVENT [IF EXISTS] event_name

转载于:https://www.cnblogs.com/noway-neway/p/5220007.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值