MySQL从5.1开始支持event功能,类似oracle的job功能。有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作的支持了。如linux crontab功能。

  创建测试表

  CREATE TABLE t

  (

  v VARCHAR(100) NOT NULL

  ) ENGINE INNODB DEFAULT CHARSET=utf8;

  创建定时器调用的存储过程

  DELIMITER $$

  DROP PROCEDURE IF EXISTS e_test $$

  CREATE PROCEDURE e_test()

  BEGIN

  INSERT INTO t VALUES('1');

  END $$

  DELIMITER ;

  要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1

  -- 查看是否开启定时器

  SHOW VARIABLES LIKE '%sche%';

  -- 开启定时器 0:off 1:on

  SET GLOBAL event_scheduler = 1;

  -- 创建事件

  --每隔一秒自动调用e_test()存储过程

  CREATE EVENT IF NOT EXISTS event_test

  ON SCHEDULE EVERY 1 SECOND

  ON COMPLETION PRESERVE

  DO CALL e_test();

  -- 开启事件

  ALTER EVENT event_test ON

  COMPLETION PRESERVE ENABLE;

  -- 关闭事件

  ALTER EVENT event_test ON

  COMPLETION PRESERVE DISABLE;

  SELECT * FROM t;

  一些例子:

  从现在开始每隔九天定时执行

  CREATE EVENT EVENT1

  ON SCHEDULE EVERY 9 DAY STARTS NOW()

  ON COMPLETION PRESERVE ENABLE

  DO

  BEGIN

  CALL TOTAL();

  END

  每个月的一号凌晨1 点执行

  CREATE EVENT EVENT2

  ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)

  ON COMPLETION PRESERVE ENABLE

  DO

  BEGIN

  CALL STAT();

  END

  每个季度一号的凌晨2点执行

  CREATE EVENT TOTAL_SEASON_EVENT

  ON SCHEDULE EVERY 1 QUARTER STARTS DATE_ADD(DATE_ADD(DATE( CONCAT(YEAR(CURDATE()),'-',ELT(QUARTER(CURDATE()),1,4,7,10),'-',1)),INTERVAL 1 QUARTER),INTERVAL 2 HOUR)

  ON COMPLETION PRESERVE ENABLE

  DO

  BEGIN

  CALL SEASON_STAT();

  END

  每年1月1号凌晨四点执行

  CREATE EVENT TOTAL_YEAR_EVENT

  ON SCHEDULE EVERY 1 YEAR STARTS DATE_ADD(DATE(CONCAT(YEAR(CURDATE()) + 1,'-',1,'-',1)),INTERVAL 4 HOUR)

  ON COMPLETION PRESERVE ENABLE

  DO

  BEGIN

  CALL YEAR_STAT();

  END

  MySQL的event和Oralce的Job还是有点不同的,这点让笔者比较困扰

  在进行按月,季,年进行自动调用存储过程 时,为了测试可以 把系统改为年的最后一天,如2010-12-31 23:59:55;

  这个Oracle的Job就会把月,季,年存储过程执行一遍。但MySQL改了系统时间了Event也没有定时执行。不知道各位大虾有没有什么好办法?可以解决这个问题。

Mysql使用event,类似oracle job的更多相关文章

  1. mysql定时脚本(event),类似oracle的job

    mysql定时脚本(event),类似oracle的job   我有2张表:tb_push_data 和 tb_push_data_log 现在需要每隔一段时间将tb_push_data 符合条件的 ...

  2. MySQL实现类似Oracle的序列

    MySQL实现类似Oracle的序列 2013-10-22 10:33:35     我来说两句      作者:走过的足迹 收藏    我要投稿 MySQL实现类似Oracle的序列   Oracl ...

  3. MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK

    原文地址:http://it.dataguru.cn/article-3352-1.html 摘要: 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来 ...

  4. MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK(转)

    1 引擎说明 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. 有点类似Oracle中的 数据库链接(DBLINK). 要允许这个存储引擎, 当 ...

  5. MySQL 定时器EVENT学习

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535 MySQL 定时器EVENT学习 MySQL从5.1开始支持event功 ...

  6. mysql的event(事件)用法详解

    SELECT * FROM mysql.event;SET GLOBAL event_scheduler = 1; -- 开启定时器 0:off 1:on SHOW VARIABLES LIKE 'e ...

  7. mysql中event的用法详解

    一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...

  8. 600万用户数据导入MYSQL、MSSQL、Oracle数据库方法【转】

      1.导入MySql数据库 参考文献:http://zhuaxia.org/blog/post/145 1.1.LOAD DATA INFILE语法 因为获得的数据库文件是一个文本文件www.csd ...

  9. mysql之event

    mysql之event http://blog.csdn.net/lxgwm2008/article/details/9088521 Mysql事件调度器(Event Scheduler)类似于定时器 ...

随机推荐

  1. DB2数据库操作XMl字段

    1.xml查询语句 ① 查询xml中的单个节点内容 select TM_PRM_OBJECT.ORG , TM_PRM_OBJECT.PARAM_CLASS , TM_PRM_OBJECT.PARAM ...

  2. C# RichTextBox 滚动条 滚动到最新行

    richTextBox.Select(richTextBox.TextLength, 0); richTextBox.ScrollToCaret();

  3. 代码转换为html显示

    需要将代码转换为 html 使其显示好看一些,可以在这里进行装换: https://tohtml.com/ http://hilite.me/

  4. 女朋友也能看懂的Zookeeper分布式锁原理

      前言 关于分布式锁,在互联网行业的使用场景还是比较多的,比如电商的库存扣减,秒杀活动,集群定时任务执行等需要进程互斥的场景.而实现分布式锁的手段也很多,大家比较常见的就是redis跟zookeep ...

  5. Gradle中的闭包

    Gradle是基于Groovy的DSL基础上的构建工具,Gradle中的闭包,其原型上实际上即Groovy中闭包.而在表现形式上,其实,Gradle更多的是以约定和基于约定基础上的配置去展现.但本质上 ...

  6. Java虚拟机三:OutOfMemoryError异常分析

    根据Java虚拟机规范,虚拟机内存中除过程序计数器之外的运行时数据区域都会发生OutOfMemoryError(OOM),本文将通过实际例子验证分析各个数据区域OOM的情况.为了更贴近生产,本次所有例 ...

  7. DFS(深度优先搜索)

    简介 DFS的过程是一个递归过程,它是从图中的某个顶点开始,首先访问起始点v,然后选择一个与顶点v相邻的且没有被访问的顶点w,以w为起始顶点,在进行DFS,直到图中所有与v相邻的顶点都被访问过为止. ...

  8. openlayers4 入门开发系列之地图切换篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  9. 物理dataguard 正常切换 脚色转换,switchover_status 状态改变

    正常切换切换前: 主库:SQL> select DATABASE_ROLE from v$database;DATABASE_ROLE----------------PRIMARY SQL> ...

  10. 【原】无脑操作:TypeScript环境搭建

    概述:本文描述TypeScript环境搭建,以及基于VSCode的自动编译设置和调试设置.网络上很多相应文章的方式过时了或者无法试验成功. ------------------------------ ...