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 ...
随机推荐
- android-betterpickers
https://github.com/derekbrameyer/android-betterpickers
- [MODx] 1. Add Html5 template into the MODx
1. Connet MODx by SSH: Go to the MODx cloud; Find you current user and right click selet Edit Cloud; ...
- HDU 2037 今年暑假不AC (贪心)
今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 关于AutoComplete整合
AutoComplete应该不是很陌生了,网上也有好多开源的js.今天主要的不是研究Autocomplete这个js的实现.今天主要讲的是将这个js做成一插件.那么今天主要用到的 js插件jquery ...
- aspose.cells 模版
aspose.cells 模版 http://www.cnblogs.com/whitewolf/archive/2011/03/21/Aspose_Cells_Template1.html
- mysql 支持emoji
1.修改my.cnf [client] default-character-set = utf8mb4 [mysqld] collation-server = utf8mb4_unicode_ci c ...
- win7 下 qwt安装教程
一.安装:qwt的安装很简单,可以参看它的install文档.1.解开下载下来的zip文件,比如解开到d:\qt\qwt-5.0.2目录下,修改目录下的qwtconfig.pri文件里面的安装路径,比 ...
- Starship Troopers
Problem Description You, the leader of Starship Troopers, are sent to destroy a base of the bugs. Th ...
- How to Diagnose Audi Vehicles via Tuirel S777
Here share how to diagnose Audi cars via Tuirel S777. 1.Well connect Tuirel S777 to your Audi car, a ...
- U盘安装Debian 7
网上看到好多使用U盘安装的教程,齐说不一.实践是检验真理的标准,Try it ! 下载系统镜像:http://cdimage.debian.org/cdimage/release/current/am ...