MySQL中的定时执行

jackxiang 2013-2-25 10:02 | |
有时我们需要MySQL中的定时执行一些命令,平时大都用的Crontab下运行脚本如php,python,perl等来做的,这儿可以实现通过存储过程来实现,如下:
mysql> show variables like '%sche%';
+---------------------------------------------------+---------+
| Variable_name                                     | Value   |
+---------------------------------------------------+---------+
| event_scheduler                                  | OFF     |
| performance_schema                            | OFF     |
+---------------------------------------------------+---------+
将事件计划开启
mysql> set global event_scheduler =1;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%sche%';
+---------------------------------------------------+---------+
| Variable_name                                     | Value   |
+---------------------------------------------------+---------+
| event_scheduler                                   | ON      |

创建存储过程test
CREATE PROCEDURE test ()
BEGIN
  update examinfo SET endtime = now() WHERE id = 14;
END;
创建event e_test
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.
关闭事件任务
alter event e_test ON
COMPLETION PRESERVE DISABLE;
开户事件任务
alter event e_test ON
COMPLETION PRESERVE ENABLE;
以上测试均成功,测试环境为mysql 5.4.2-beta-community mysql community server(GPL)

来自:http://blogread.cn/it/article/811?f=wb

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/6057/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
2013-2-25 15:20 | 仙女下凡xo7 Email Homepage
楼主的帖子实在是写得太好了。文笔流畅,修辞得体,深得魏晋诸朝遗风,更将唐风宋骨发扬得入木三分,能在有生之年看见楼主的这个帖子。实在是我三生之幸啊。看完楼主的这个帖子之后,我竟产生出一种无以名之的悲痛感——啊,这么好的帖子,如果将来我再也看不到了,那我该怎么办?那我该怎么办?直到我毫不犹豫地把楼主的这个帖子收藏了,我内心的那种激动才逐渐平静下来。可是我立刻想到,这么好的帖子,倘若别人看不到,那么不是浪费楼主的心血吗?经过痛苦的思想斗争,我终于下定决心,牺牲小我,奉献大我。我要拿出这帖子奉献给世人赏阅,我要把这个帖子一直往上顶,往上顶!顶到所有人都看到为止!
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]