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也没有定时执行。不知道各位大虾有没有什么好办法?可以解决这个问题。
猜你喜欢
- Jupyter平台默认开发的字体为宋体,在高分屏下视觉效果差在 C:\User\用户名\.jupyter\custom下面的custom.c
- 最近,正好发生了一件大事,就是 GitLab 的运维同学不小心删除了生产的数据,虽然 GitLab 已经骇人听闻的准备了五种备份机制,但是,
- 具体用法如下: 代码如下:-- ============================================= -- Autho
- #最近在网上看代码时,出现了@???的代码,看了好久也不知道是什么意思,经过了解原来是装饰器,我给大家举个例子讲解一下,帮助大家快速理解:#
- Asyncio 任务可以通过调用它们的 cancel() 方法来取消。我们可以通过将任务包装在对 asyncio.shield() 的调用中
- 库的管理1、库的管理创建、修改、删除1、库的创建CREATE DATABASE UF NOT EXISTS books;2、库的修改库名一般
- 环境配置gradio 安装 pip install gradiocv2 安装 pip install python-opencv实验原理cv
- 一台服务器上开启了3个mysql实例进程,占用不同的端口 3306、3307、3308原理说明:通过自动发现规则来获取MySQL实例的端口,
- 使用存储过程,在操作数据库时开启事务,避免并发时同时操作造成数据重复CREATE DEFINER=`root`@`localhost` PR
- 脚本调试第一步:设置中断(鼠标左键点击)第二步:输入中断条件(可选功能,鼠标右键点击红点)第三步:触发中断(当符合条件是,中断被触发)出现中
- 本文适用范围:全面阐述MySQL数据库的各种操作,分虚拟主机和服务器两种情况。虚拟主机1、通过PHPMyAdmin的导入导出功能,这个软件一
- 如下所示:RuntimeError: stack expects each tensor to be equal size, but got
- 一个简单的车牌输入组件(vue),供大家参考,具体内容如下代码:vue代码:<template> &l
- 本文实例讲述了python实现希尔排序算法的方法。分享给大家供大家参考。具体如下:def shellSort(items): i
- 最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容。如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来
- 1.正态分布简介正态分布(normal distribtution)又叫做高斯分布(Gaussian distribution),是一个非常
- 安装electroncnpm install electron -g安装electron-packagercnpm install elec
- 目录0x01 字符串(string)引号转义拼接字符串长字符串索引( indexing)运算符in创建列表切片赋值0x02 字符串格式化模板
- 最长公共子序列python实现,最长公共子序列是动态规划基本题目,下面按照动态规划基本步骤解出来。1.找出最优解的性质,并刻划其结构特征序列
- python有时候需要清除字符串前后空格,而字符本身的空格不需要清除掉,那就不能用正则re.sub来实现。这时用到strip()函数用法:s