MySQL 定时器EVENT学习

来源:Asp之家 时间:2010-10-14 13:55:00 

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,oracle
0
投稿

猜你喜欢

  • MySQL学习(七):Innodb存储引擎索引的实现原理详解

    2024-01-25 05:53:02
  • Pandas:DataFrame对象的基础操作方法

    2023-07-20 16:13:19
  • 在Mac OS上安装Oracle数据库的基本方法

    2024-01-20 13:57:11
  • Python Asyncio 库之同步原语常用函数详解

    2021-04-27 03:50:39
  • Python extract及contains方法代码实例

    2021-03-29 07:51:25
  • PHP MVC模式在网站架构中的实现分析

    2023-07-22 21:05:14
  • python网络爬虫精解之Beautiful Soup的使用说明

    2021-02-21 15:20:48
  • python怎么自定义捕获错误

    2022-05-25 02:57:35
  • python 获取et和excel的版本号

    2022-05-03 09:24:51
  • 解析array splice的移除数组中指定键的值,返回一个新的数组

    2023-11-18 09:51:28
  • PHP中的session永不过期的解决思路及实现方法分享

    2023-11-20 11:19:23
  • python多线程对多核cpu的利用解析

    2023-03-10 02:50:13
  • asp.net微信开发(永久素材管理)

    2023-07-21 13:02:45
  • python实现图片九宫格分割的示例

    2021-02-08 22:19:38
  • 浅谈JavaScript中的“!!”作用

    2024-05-05 09:04:53
  • vue中 $forceUpdate的使用解析

    2024-06-05 09:15:18
  • python pyinstaller 加载ui路径方法

    2023-06-12 23:27:20
  • Python 实现过滤掉列表中唯一值

    2021-09-26 23:13:55
  • 如何更改mysql命令下提示信息

    2010-10-25 19:48:00
  • Python函数式编程指南(四):生成器详解

    2023-08-23 05:50:02
  • asp之家 网络编程 m.aspxhome.com