MySQL 事件的创建 & 小示例

事件创建的语法:

CREATE
    [DEFINER = 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}

前置工作:

1、看一下事件的设置是否开启了

show variables like 'event_scheduler';

2、若前一步显示的values是“off”,就需要,开启事件

set global event_scheduler = on;

3、若想关闭事件,可执行下列 sql 语句

set global event_scheduler = off;

小示例:

 1、创建我们的表:

drop table if exists dina_test_table;
create table Dina_test_table(
	id int(11) not null AUTO_INCREMENT,
	insert_time datetime,
	after_six_day date,
	primary key (`id`))

2、创建一个简单的无参数的存储过程

drop procedure if exists dina_test_procedure;
create procedure dina_test_procedure()
begin
    insert into dina_test_table values(null,now(),date_add(current_date(),interval 6 day));
end

 注:若想了解一下存储过程中的一些语法 或 mysql 中的常用日期函数 ,可点击此处:存储过程日期函数

 3、创建 一个每隔10 秒执行一次存储过程的 事件:

drop event if exists dina_test_events_1;
create event dina_test_events_1
on schedule every 10 second
on completion preserve -- 该事件执行完成后,不会被 drop 掉
do call dina_test_procedure();

执行后的效果:

4、创建一个这个月 每天 凌晨 都会执行 一次存储过程的 事件:

drop event if exists dina_test_events_2;
create event dina_test_events_2
on schedule every 1 day -- 可以改成一天、一个星期、一个月
    starts '2020-05-01 00:00:00' -- 事件执行的开始时间
    ends '2020-05-31 00:00:00' -- 到了设定的时间,该事件就会停止执行
on completion preserve -- -- 该事件停止执行后,不会被 drop 掉
do call dina_test_procedure();

 5、创建一个在 30 分钟后清空 dina_test_table 表数据的 事件  :

-- 注:该事件执行完成后 会被drop 掉
drop event if exists dina_test_events_3;
create event dina_test_events_3
on schedule at current_timestamp + interval 30 minute -- 在当前的时间戳的基础上加上 30 minute 就会执行此事件
do truncate table dina_test_table; -- 清空 表 dina_test_table

4、 查看我们刚才创的事件的一些信息,包括事件的名称、时间开始&结束的时间等

select * from mysql.event;

若本文哪里有错误的,望指正,谢谢!!!!

参考资料:CREATE EVENT Statement

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值