mysql--事件

转载自:https://www.cnblogs.com/qlqwjy/p/7954175.html

简介

  • 事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。
  • 默认创建事件存储在当前库中,也可显示指定事件创建在哪个库中

开启关闭事件调度器

查询事件调度器开闭状态

show variables like '%event_scheduler%'; 

开启事件调度器

SET GLOBAL event_scheduler = ON; 

关闭事件调度器

SET GLOBAL event_scheduler = OFF; 

查询当前库中事件

mysql> show events;

查询所有库中事件

mysql> select * from mysql.event; 

创建事件

一条create event语句创建一个事件。每个事件由两个主要部分组成,第一部分是事件调度(event schedule),表示事件何时启动以及按什么频率启动,第二部分是事件动作(event action ),这是事件启动时执行的代码

CREATE 
    EVENT 
    [IF NOT EXISTS] 
    event_name 
    ON SCHEDULE schedule 
    [ON COMPLETION [NOT] PRESERVE] 
    [ENABLE | DISABLE] 
    [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} 

示例-创建一个表记录每次事件调度的名字和时间戳

创建记录表

mysql> drop table if exists events_list; 
mysql> create table events_list(event_name varchar(20) not null, event_started timestamp not null); 

创建事件

create event event_now  
on schedule  
at now()  
do insert into events_list values('event_now', now());

查询记录表

mysql> select * from events_list; 

修改事件

修改执行频率

alter event test.event_minute 
on schedule  
every  30 second   
do insert into events_list values('event_now', now());

修改事件名字

alter event test.event_minute  
rename to test.event_second;

修改事件活动/不活动

alter event test.event_second disable; 
alter event test.event_second enable; 

删除事件

DROP EVENT [IF EXISTS] event_name 

示例-删除一年前的黑名单

定义存储过程

delimiter //

CREATE PROCEDURE clearEmploutBlack()

BEGIN

delete from blacklist where temporaryInStatus='0' and employeeStatus='1' and TIMESTAMPDIFF(YEAR,time,NOW())=1;

END//

delimiter ;

创建事件

CREATE event event_clearEmployOutBlack 

ON SCHEDULE  

EVERY  1 MINUTE   STARTS NOW()

DO CALL clearEmploutBlack() ;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值