MySQL中的事件调度器是 MySQL 5.1 以后才新增的功能.可以将数据库按照规定的时间周期对数据库做,增加,删除,修改等操作.相当于linux中的无人调度器 crontab(相关crontab的操作请看参看我些的linux的计划任务).避免了一些数据相关的定时任务在业务操作层,减少操作员误操作的风险, 大大缩短了工作量提高工作效率.
首先介绍下语法:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
说明:中括号中为可选择项,可指定任务执行的频率.通过DO字句指定要执行的具体操作.
创建一个计划任务每个三秒钟想一个表中插入一条测试数据.例子如下:
(1) 创建测试用测试表既:(注意:方才为了模拟数据库密码忘记情况做了以下数据库停止操作,启动的时候大家注意一定要把进程中的 mysqldkill掉否则无法启动.)
接下来创建测试库,本例直接用以前用于测试的表:t_time,创建语句如下:
CREATE TABLE `t_time` (
`d` date DEFAULT NULL,
`t` time DEFAULT NULL,
`dt` datetime DEFAULT NULL,
`updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后更新时
间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2) 创建事件调度器 event_insert_t_time
(3) 查看创建事件调度器是否成功:出现下图说明创建成功.
(4) 过了几秒查看表中没有数据.
(5) 查看调度器状态看是否为开启状态,(默认为关闭的)
(6) 打开调度器
(7) 查看表中数据
(8) 设计调度器禁用
(9) 如果不用还可以删除调度器命令如下:
drop event event_insert_t_time;
本文我原版,欢迎转载转载请说明出处.