Mysql编写定时任务事件
原文:Mysql编写定时任务事件

场景:

  例如:某系统,用户每天只能拥有一次的抽奖机会,抽过后当天就不可再抽,但是过了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()BEGINUPDATE 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语法可查看:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html

posted on 2014-05-13 22:05 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3726580.html

Mysql编写定时任务事件相关推荐

  1. mysql设置定时任务

    联系我吧 http://qq.bishijie1999.top mysql设置定时任务 一. 首先我们要开启 mysql的定时策略 执行 show variables like '%event_sch ...

  2. 一文详解MySQL中的事件调度器EVENT

    MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序. EVENT由其名称和所在的schema唯一标识. EVENT根据计划执行特定操作.操作 ...

  3. mysql——event定时任务

    一.引言 最近要将数据库里每小时记录的原始数据分别按照天.周.月进行处理,然后用于统计分析,抽象出来就是一个定时任务处理的功能,然后自己寻找了一些方法,有了这篇文章== 二.定时任务方法 1.操作系统 ...

  4. mysql 关闭定时任务_mysql的定时任务实例教程

    前言 自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.对数据进行汇总等等),来取代原先只能由操作系统 ...

  5. node编写定时任务,for循环只执行一遍的解决办法

    在用node编写定时任务时候,发现for循环只执行i=0这一次,就不接着循环执行了,下面贴上代码: exports.task = async function(ctx){ let { app } = ...

  6. mysql编写中文时变成问号解决方法

    mysql编写中文时变成问号解决方法 参考文章: (1)mysql编写中文时变成问号解决方法 (2)https://www.cnblogs.com/yangzhixue/p/11449525.html ...

  7. 【文档】七、Mysql Binlog不同事件类型的事件内容

    2019独角兽企业重金招聘Python工程师标准>>> 下面主要讲述了每个类型的事件中的固定和可变部分的数据. Start_log_event_v3/START_EVENT_V3 这 ...

  8. 关于mysql的定时任务

    应用场景:发货后15天自动更改订单状态为已收货 实现方法:mysql的event事件 1.查看event事件是否开启,默认都是关闭状态 SHOW VARIABLES LIKE 'event_sched ...

  9. mysql事件计划自动_逐步讲解MySQL中定时事件计划的创建

    一.使用过程1.查看当前是否已开启事件计划(调度器)有3种方法: SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; SH ...

最新文章

  1. 摘:C/C++中时间类time.h
  2. Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程
  3. C语言函数题-P字符串的比较
  4. java 循环拼接字符串用分号隔开_Java 8中字符串拼接新姿势:StringJoiner
  5. C++ functor 仿函数
  6. oracle x ksppi,求 x$ksppi 和x$ksppcv 得详细解释
  7. XML/YAML文件的输入输出
  8. asp.net 文件下载(txt,rar,pdf,word,excel,ppt)
  9. [SinGuLaRiTy] NOIP2017 提高组
  10. python和java学哪个好-python和java自学哪个好?
  11. 宾大最新《图神经网络》课程,附视频与课件
  12. ABT 链网公测版发布上线:织链为网 为 DApps 奠基
  13. 管家婆 经营历程 Date exceeds maximum of 19-12-31 报错解决补丁包
  14. rf扫描枪_RF枪操作的简要步骤
  15. 数值优化学习十八——SQP
  16. 下载jupyterlab中的文件夹
  17. Maya_to_Unity工作流程
  18. 科目二 座椅调节 记录
  19. 网传学习通1.7亿密码泄露:有什么补救措施?
  20. 一文带你了解助贷行业

热门文章

  1. html 单元格被撑开_table td宽度被撑开的问题。棘手~_html/css_WEB-ITnose
  2. nsga2代码解读python_python自动化办公系列 | python操作pdf—— PyPDF2 和 pdfplumber模块(1)...
  3. qt客户端打包_悬赏问答 - QT 类似QQ的 服务器与客户端程序 程序打包+数据库问题...
  4. php给客户端发广播,phpsocket.io如何向一个组广播?
  5. PHP地图规划骑行路径,骑行路线规划-路线规划-开发指南-iOS 导航SDK | 高德地图API...
  6. SimpleDateFormat线程不安全及解决方案
  7. golang 包含 数组_在 Golang 中如何快速判断字符串是否在一个数组中
  8. button标签设置隐藏和显示_让你更高效的功能——设置、预设的妙用【动态数学软件GeoGebra】...
  9. Android热修复Java类_Android 热修复(一)
  10. html编写输出学生姓名,用C++编写一个学生信息管理系统