Mysql 作业(Scheduler)
200 ? "200px" : this.width)!important;}
-->
介绍
作业也叫做事件调度,其实它也就是一个时间触发器;它可以定义某个时间点执行指定的数据库命令操作。
语法
CREATE
[DEFINER = { user | CURRENT_USER }] ######定义创建人,默认创建事件的用户就是事件的定义人,必须具备super权限才能指定其他用户。
EVENT ######创建事件
[IF NOT EXISTS] ######删除并判断是否有存在重名的作业
event_name ######作业名
ON SCHEDULE schedule ######ON SCHEDULE是固定语法,schedule定义执行的时间
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE] ######启用或者禁用或者在从库上禁用
[COMMENT 'comment'] ######备注
DO ######规定语法
event_body; ######操作命令 schedule:
AT timestamp [+ INTERVAL interval] ... ####定义执行的时间,命令在指定的时间执行一次,INTERVAL是在AT timestamp的基础上执行类似DATE_ADD()命令,在指定的时间基础上加上一个时间,其中interval参数有很多具体的时间单位具体参考下面
| EVERY interval ####EVERY是重复执行的命令和AT是冲突的
[STARTS timestamp [+ INTERVAL interval] ...] ####定义开始时间(可以忽略),这里也可以在规定的开始时间基础上加上一个时间
[ENDS timestamp [+ INTERVAL interval] ...] ####定义结束时间(可以忽略) interval: ###时间参数
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
注意:AT和EVERY是互斥的操作;AT:只在规定的时间执行一次,EVERY:重复执行。
组合的时间格式只有“年月日时分秒”之间的组合方式,没有week的组合方式
由于Mysql语法非常的灵活,所以它支持很多的时间格式,类似如下:
.在指定的时间基础上加上2分10秒
AT '2016-06-01 22:00:00' + INTERVAL '2:10' MINUTE_SECOND
等同于
AT '2016-06-01 22:00:00' + INTERVAL 2 MINUTE + INTERVAL 10 SECOND
.在当前的时间基础上加上3星期2天
AT CURRENT_TIMESTAMP + INTERVAL WEEK + INTERVAL DAY
3.指定开始和结束时间,从当前时间加30分钟开始至当前时间加4个星期结束每12个小时执行一次命令EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK
注意:EVERY不支持“+ INTERVAL”格式,例如“+ INTERVAL 2 MINUTE + INTERVAL 10 SECOND”只能用 “ ‘2:10’ MINUTE_SECOND”代替
查看作业功能否启用
show global variables like '%event_scheduler%';
select @@event_scheduler;
如果没有启用需要修改my.cnf,加入
event_scheduler=
创建作业
1.在指定的时间点执行命令
CREATE EVENT testevent
ON SCHEDULE AT '2016-06-27 22:00:00'
COMMENT 'AT TIME '2016-06-27 22:00:00' EXEC INSERT Tevent'
DO
INSERT INTO study.Tevent() VALUES(NOW());
2.也支持delimiter定义结束符
delimiter | CREATE EVENT e_daily
ON SCHEDULE
EVERY DAY
COMMENT 'Saves total number of sessions then clears the table each day'
DO
BEGIN
INSERT INTO site_activity.totals (time, total);
SELECT CURRENT_TIMESTAMP, COUNT(*) FROM site_activity.sessions;
DELETE FROM site_activity.sessions;
END | delimiter ;
3.循环
delimiter | CREATE EVENT e
ON SCHEDULE
EVERY SECOND
DO
BEGIN
DECLARE v INTEGER;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; SET v = ; WHILE v < DO
INSERT INTO t1 VALUES ();
UPDATE t2 SET s1 = s1 + ;
SET v = v + ;
END WHILE;
END | delimiter ;
4.定义开始和结束时间
CREATE EVENT testevent ON SCHEDULE
EVERY HOUR
STARTS CURRENT_TIMESTAMP + INTERVAL MINUTE
ENDS CURRENT_TIMESTAMP + INTERVAL WEEK
DO
INSERT INTO study.Tevent() VALUES(NOW());
查看数据库中创建的作业
select * from information_schema.events;
启用禁用作业
.启用
ALTER EVENT schema.event_name ENABLE
.禁用
ALTER EVENT schema.event_name DISABLE
删除作业
drop event schema.eventname
官方文档:http://dev.mysql.com/doc/refman/5.6/en/create-event.html
总结
DO后面的支持通用的Mysql语法操作;所有可以可以执行单个命令、可以执行命令串、也可以类型函数和存储过程执行循环语句、还可以直接调用存储过程等。
注意:每个作业都有它所属的数据库,作业是属于具体的某个数据库的。
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |
Mysql 作业(Scheduler)的更多相关文章
- Event --mysql的scheduler.md
事件调度器event 相当于oracle scheduler CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] even ...
- mysql定时任务/mysql作业
转自:https://www.jb51.net/article/138569.htm 详细参考:https://www.cnblogs.com/qlqwjy/p/7954175.html(事件& ...
- MySQL作业
创建作业事件 MONTH STARTS '2015-01-01 05:30:01' ON COMPLETION NOT PRESERVE ENABLE DO CALL sp_moveLoginReco ...
- 错误解决mysql - Event Scheduler: No data - zero rows fetched, selected, or processed
当遇到一个NOT FOUND(无数据)的警告时,使用一个包含清除警告语句的条件句柄处理,就可以继续处理程序并退出句柄. 这个问题在MySQL5.6.3之后的版本已经解决了,所以该解决方法不是必要的. ...
- MySQL(作业练习)
day59 参考:http://www.cnblogs.com/wupeiqi/p/5748496.html 现有数据库 /* Navicat Premium Data Transfer Source ...
- mysql安装及基本操作(mysql作业)
1 官网下载,链接 https://www.mysql.com/downloads/ Download MySQL Community Server 默认为你选好了Mac OS X 平台 选择的是. ...
- 【MySQL作业】MySQL函数——美和易思系统信息函数和加密函数应用习题
点击打开所使用到的数据库>>> 1.显示当前 MySQL 服务器的版本信息和登录信息. MySQL 系统信息函数 version() 用于返回当前 MySQL 的版本号," ...
- 【MySQL作业】MySQL函数——美和易思日期和时间函数应用习题
点击打开所使用到的数据库>>> 1.采用尽可能多的方式显示当前系统日期和时间. 下列 SQL 语句可以显示当前系统的日期和时间: curdate() 和 current_date() ...
- 【MySQL作业】MySQL函数——美和易思字符串函数应用习题
点击打开所使用到的数据库>>> 1.将所有客户的姓名与电话以"-"作为分隔符进行连接显示. 使用 concat(s1,s2,-) 函数将所有客户的姓名与电话以&q ...
随机推荐
- GitHub使用详解
1.GitHub是什么? GitHub这个名词既可以是那个流行的代码分享和协作网站 https://github.com/,也可以是指Git客户端工具(与其他的Git客户端工具如GitEye类似,只不 ...
- Android版本号的识别——$(PLATFORM_VERSION)
#/******************************************************************************#*@file Android.mk#* ...
- UNIX基础知识之系统调用与库函数的区别与联系
上图为UNIX操作系统的体系结构.内核的接口被称为系统调用(system call),公用函数库构建在系统调用接口之上,应用软件既可以使用公用函数库,也可直接使用系统调用. 更详细的说明如下: 所有操 ...
- C#轻型ORM框架PetaPoco试水
近端时间从推酷app上了解到C#轻微型的ORM框架--PetaPoco.从github Dapper 开源项目可以看到PetaPoco排第四 以下是网友根据官方介绍翻译,这里贴出来. PetaPoco ...
- c# 操作word
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- cocos2dx新建android项目lib拷贝、访问权限等问题集
win7上面搭建cocos2dx的android项目,用create-android-project.bat新建一个项目时,出现了访问权限和项目无lib的问题. 解决方案: 1.项目无lib问题. 当 ...
- Android 自学之画廊视图(Gallery)功能和用法
Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显 ...
- Oracle常用命令13(数据库的启动、关闭)
数据库的启动.关闭 数据库的启动:安装启动.非安装启动.共享启动.独占启动.约束启动.强制启动 --不登陆的方式进入 Sqlplus /nolog 安装启动: Startup {pfile=<f ...
- poj 2728 最优比率生成树
思路:设sum(cost[i])/sum(dis[i])=r;那么要使r最小,也就是minsum(cost[i]-r*dis[i]);那么就以cost[i]-r*dis[i]为边权重新建边.当求和使得 ...
- [Yii2]Access to debugger is denied due to IP address restriction. The requesting IP address is
在更新到正式平台,看到runtime/app.log 有 Access to debugger is denied due to IP address restriction. The request ...