博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql编写定时任务事件
阅读量:4984 次
发布时间:2019-06-12

本文共 1381 字,大约阅读时间需要 4 分钟。

场景:

  例如:某系统,用户每天只能拥有一次的抽奖机会,抽过后当天就不可再抽,但是过了24:00点后用户就重新拥有一次抽奖机会。像这种需要数据库定时对某个字段进行更新操作的任务,完全可以通过数据库本身的事件机制进行操作,而服务器端也不需要用额外的代码进行这种监控定时的操作。

Mysql:

  本文讨论的是Mysql数据库,Event Scheduler事件调度器应该是在Mysql5.1引入的,所以使用定时任务调度时,请注意查看你的Mysql版本。

创建事件调度的语法:

/*创建事件event_name*/DELIMITER $$CREATE event IF NOT EXISTS event_nameON SCHEDULE 任务条件 ON COMPLETION PRESERVEDO SQL操作DELIMITER ;

实例情景:每半个小时更新统计字段count为0,

/*创建定时定时更新count字段事件*/DELIMITER $$CREATE event IF NOT EXISTS update_countON SCHEDULE EVERY 30 MINUTE /*MYSQL注意时区设置,默认非中国时区*/ STARTS TIMESTAMP '2009-12-18 02:58:00'ON COMPLETION PRESERVEDO update tb_count set count=0 $$DELIMITER ;

如上,创建了一个名叫update_count的事件,执行条件则为每30分钟执行一次,(EVERY 30 MINUTE),执行Sql为(update tb_count set count=0), 当然你可能会按天执行,所以你也可以写(EVERY 1 DAY),

如果执行的任务Sql复杂,我们可以写触发器,直接看示例代码:

DELIMITER $$DROP PROCEDURE IF EXISTS update_count$$CREATE PROCEDURE update_count()BEGIN    UPDATE tb_count SET count=0;END$$DELIMITER ;

以上为创建一个存储过程update_count,执行对tb_count中count字段的更新。任务中代码中do字段后则改为(call update_count() $$)。当然你可能会更复杂的需求。

添加完event后,还需要查看event_scheduler是否开启,否则添加的event不会执行,移步下面的代码:

/*查看event是否开启*/SHOW VARIABLES LIKE '%sche%';/*开启event*/SET GLOBAL event_scheduler=1;

查看和关闭你所添加的event:

 

/*关闭 event */ALTER event update_count ON COMPLETION PRESERVE DISABLE;/*启用 event */ALTER event update_count ON COMPLETION PRESERVE ENABLE;

 更多MySql语法可查看:

转载于:https://www.cnblogs.com/zivxiaowei/p/3725629.html

你可能感兴趣的文章
bzoj4486: [Jsoi2015]串分割
查看>>
struts2 下载
查看>>
隔离级别
查看>>
正式开始之前......
查看>>
数据结构之【排序】复习题
查看>>
程序中怎样限制使用时间
查看>>
oc继承,实现,分类
查看>>
vs2010 快捷键大全 (转)
查看>>
oracle环境变量详解
查看>>
程序的组成部分
查看>>
解决Ubuntu的root账号无法登录SSH问题-Permission denied, please try again.
查看>>
查看oracle 用户执行的sql语句历史记录
查看>>
iptables--白名单配置
查看>>
创建一个Hello World模块
查看>>
python中精确输出JSON浮点数的方法
查看>>
大数据未来将呈现的八大发展趋势
查看>>
监听器实现的主要设计模式是观察者模式,
查看>>
[Java学习] Java异常类型
查看>>
${sessionScope.user}的使用方法
查看>>
IOS断点下载
查看>>