mysql 定时任务 执行_如何使用MySQL来执行定时任务

首先我们创建一张表tb_person作为测试表(可以使用图形化界面或者sql语句):

CREATE TABLE `tb_person` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`p_name` char(20) DEFAULT NULL COMMENT '姓名',

`p_sex` char(10) DEFAULT NULL COMMENT '性别',

`gmt_create` datetime DEFAULT NULL COMMENT '创建时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB;

然后就可以来测试一下mysql的定时任务到底该怎么操作,ok,开搞!

我的本地mysql版本使用了最新的mysql 8.0.11.

36886fd78ff9

查看mysql版本

1、首先检查是否开启了定时任务

mysql>show variables like 'event_scheduler';

36886fd78ff9

是否开启定时任务

Value = ON表示已经开启了定时任务(MySQL 8.0.11是默认开启的),ok,其他版本如果没有开启怎么办?当然可以设置,在MySQL的配置文件my.ini中添加如下一行:

[mysqld]

event_scheduler=ON /*这一行加入 mysqld 标签下*/

接下来就是重点:

2、创建存储过程

学习完之后可以使用如下语句来创建:本次我们来模拟一个新增操作

mysql>CREATE PROCEDURE p_test() /*创建存储过程p_test以备后续调用*/

BEGIN

insert into tb_person (name,sex,gmt_create) values("bearPotMan","男",now());/*要执行的语句,可以还有其他操作语句,比如update等*/

END;

3、设置定时任务调用这个存储过程

创建一个事件event来调用上面创建好的存储过程:

mysql>CREATE EVENT e_test /*创建事件e_test*/

ON SCHEDULE EVERY 1 second STARTS TIMESTAMP '2018-06-29 00:42:00'/*从2018-06-29 00:42:00这个时间开始每一秒*/

ON COMPLETION PRESERVE /*表示创建后即时生效,或者可以使用 ON COMPLETION PRESERVE DISABLE 表示创建后不用即时生效,可以结合上一条语句看是否需要即时生效*/

DO

BEGIN

CALL p_test();/*调用之前创建好的存储过程*/

END;

如果设置了ON COMPLETION PRESERVE DISABLE,可以使用下面的语句来开始定时任务:

alter event e_test on completion preserve enable;/*开启定时任务*/

4、关闭定时任务

ok,最后来说一下怎么来关闭定时任务,其实就一条语句的事:

alter event e_test on completion preserve disable;/*关闭定时任务*/

ok,去执行查询语句看一下效果吧!是不是又get到一个新技能。。。

我是bearPotMan,一个经验不足的十八线演(码)员(农)。

Know everything,control everything!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值