mysql如何让一个存储过程定时执行


1.创建一个表
CREATE TABLE aaa (timeline TIMESTAMP);
2.创建存储过程test
CREATE PROCEDURE test ()
BEGIN
update examinfo SET endtime = now() WHERE id = 14;
END;
3.创建事件e_test
CREATE EVENT if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
##每隔30秒将执行存储过程test,将当前时间更新到表中id=14的记录的endtime字段中去
4.查看event是否开启
show variables like ‘%sche%’;
show variables like ‘log_%’;
5.关闭事件任务
SET GLOBAL event_scheduler = OFF;
alter event e_test ON COMPLETION PRESERVE DISABLE;
6.开户事件任务
SET GLOBAL event_scheduler = ON;
alter event e_test ON COMPLETION PRESERVE ENABLE;
7.举例如下:
1) 首先来看一个简单的例子来演示每秒插入一条记录到数据表
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 1 SECOND
DO INSERT INTO aaa VALUES (CURRENT_TIMESTAMP);
等待3秒钟后,再执行查询看看:

mysql> SELECT * FROM aaa;
±--------------------+
| timeline |
±--------------------+
| 2007-07-18 20:44:26 |
| 2007-07-18 20:44:27 |
| 2007-07-18 20:44:28 |
±--------------------+
2) 5天后清空test表:

CREATE EVENT e_test
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE aaa;
3) 2007年7月20日12点整清空test表:

CREATE EVENT e_test
ON SCHEDULE AT TIMESTAMP ‘2007-07-20 12:00:00’
DO TRUNCATE TABLE aaa;
4) 每天定时清空test表:

CREATE EVENT e_test_delete
ON SCHEDULE EVERY 1 HOUR
DO TRUNCATE TABLE aaa;
5) 5天后开启每天定时清空test表:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE aaa;
6) 每天定时清空test表,5天后停止执行:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE aaa;
7) 5天后开启每天定时清空test表,一个月后停止执行:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
DO TRUNCATE TABLE aaa;
[ON COMPLETION [NOT] PRESERVE]可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE。
8) 每天定时清空test表(只执行一次,任务完成后就终止该事件):

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ON COMPLETION NOT PRESERVE
DO TRUNCATE TABLE aaa;
[ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE。
[COMMENT ‘comment’]可以给该事件加上注释。

文章链接:https://blog.csdn.net/qq_26562641/article/details/53301407


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM