mysql 定时任务(事件) 使用方法详解

mysql 定时任务(事件) 使用方法详解

一、什么是mysql定时任务(事件)?

一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行;

 

二、如何开启mysql定时任务(事件)?

 

1、查看mysql定时任务当前状态是ON还是OFF:

sql命令:

  1. show variables like 'event_scheduler'

 

结果如下:

event_scheduler=OFF:代表未开启;ON代表开启;

查看mysql定时任务当前状态是否开启

2、开启mysql定时任务

sql命令:

  1. set global event_scheduler = on

 

三、创建mysql定时任务(事件):实例

 

1、新建一张user表

sql命令:

  1. DROP TABLE IF EXISTS `user`;
  2. CREATE TABLE `user` (
  3.   `id` bigint(20) NOT NULL AUTO_INCREMENT,
  4.   `namevarchar(200) NOT NULL,
  5.   `address` varchar(500) NOT NULL,
  6.   `addtime` datetime NOT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

2、新建mysql定时任务(新建事件)

注意:mysql事件有两种事件类型,一个是间隔触发,另一个是特定事件触发。

 

类型一:每隔一分钟插入一条数据:

 

参数说明:

DEFINER:创建者;

ON COMPLETION [NOT] PRESERVE :表示当事件不会再发生的情况下,删除事件(注意特定时间执行的事件,如果设置了该参数,执行完毕后,事件将被删除,不想删除的话可以设置成ON COMPLETION PRESERVE);

ENABLE:表示系统将执行这个事件;

sql命令:

  1. DROP EVENT IF EXISTS `event_minute`;
  2. DELIMITER ;;
  3. CREATE DEFINER=`root`@`localhost` EVENT `event_minute` ON SCHEDULE EVERY 1 MINUTE STARTS '2017-07-20 16:00:43' ON COMPLETION NOT PRESERVE ENABLE DO
  4. BEGIN
  5. INSERT INTO USER(name, address,addtime) VALUES('test1','test1',now());
  6. INSERT INTO USER(name, address,addtime) VALUES('test2','test2',now());
  7. END
  8. ;;
  9. DELIMITER ;

 

类型二:特定时间插入一条数据,如2017-07-20 16:05:00

 

参数说明:

DEFINER:创建者;

ON COMPLETION [NOT] PRESERVE :表示当事件不会再发生的情况下,删除事件(注意特定时间执行的事件,如果设置了该参数,执行完毕后,事件将被删除,不想删除的话可以设置成ON COMPLETION PRESERVE);

ENABLE:表示系统将执行这个事件;

 

sql命令:

  1. DROP EVENT IF EXISTS `event_at`;
  2. DELIMITER ;;
  3. CREATE DEFINER=`root`@`localhost` EVENT `event_at` ON SCHEDULE AT '2017-07-20 16:05:00' ON COMPLETION NOT PRESERVE ENABLE DO
  4. BEGIN
  5. INSERT INTO USER(name, address,addtime) VALUES('AT','AT',now());
  6. END
  7. ;;
  8. DELIMITER ;

 

两种数据插入结果如下图:

SHOW EVENTS

 

四、查看mysql定时任务(事件)计划方法

我如何能知道我有哪些mysql定时任务计划?我要计划了定时任务10个、100个、甚至千个又应该如何全部列出来?

 

sql命令、方法一:

  1. SHOW EVENTS

 

结果如下:

SHOW EVENTS

 

sql命令、方法二:

  1. select * from mysql.event

 

结果如下:

查看mysql定时任务计划方法

 

五、删除mysql定时任务(事件)计划方法

如果我已经设置了很多的mysql定里任务计划,我想删除某个mysql定时任务又应该怎么办?

 

sql命令:

  1. drop EVENT event_minute

 

注意:event_minute是你创建定时任务计划的名字;删除mysql定时计划最好是结合上面的方法;

而且,上面“查看mysql定时任务计划列表”的时候也可以直接通过phpmyadmin来删除;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值