`
leihualin666
  • 浏览: 30373 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mysql怎么让一个存储过程定时执行

阅读更多
查看event是否开启: show variables like '%sche%';
将事件计划开启: set global event_scheduler=1;
关闭事件任务: alter event e_test ON COMPLETION PRESERVE DISABLE;
开户事件任务: alter event e_test ON COMPLETION PRESERVE ENABLE;

简单实例.
创建表 CREATE TABLE test(endtime DATETIME);

创建存储过程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字段中去




1) 首先来看一个简单的例子来演示每秒插入一条记录到数据表

USE test;
CREATE TABLE aaa (timeline TIMESTAMP);
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 1 SECOND
DO INSERT INTO test.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 test.aaa;
3) 2007年7月20日12点整清空test表:

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

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

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

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.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 test.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 test.aaa;
[ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE。
[COMMENT ‘comment’]可以给该事件加上注释。

三、修改事件(ALTER EVENT)
ALTER EVENT event_name
  [ON SCHEDULE schedule]
  [RENAME TO new_event_name]
  [ON COMPLETION [NOT] PRESERVE]
  [COMMENT 'comment']
  [ENABLE | DISABLE]
  [DO sql_statement]
1) 临时关闭事件

ALTER EVENT e_test DISABLE;
2) 开启事件

ALTER EVENT e_test ENABLE;
3) 将每天清空test表改为5天清空一次:

ALTER EVENT e_test
ON SCHEDULE EVERY 5 DAY;
四、删除事件(DROP EVENT)
语 法很简单,如下所示:

DROP EVENT [IF EXISTS] event_name
例如删除前面创建的e_test事件

DROP EVENT e_test;
当然前提是这个事件存在,否则会产生ERROR 1513 (HY000): Unknown event错误,因此最好加上IF EXISTS

DROP EVENT IF EXISTS e_test;

create event test
ON SCHEDULE AT '2007-09-01 12:00:00' + INTERVAL 1 DAY
on completion not preserve
do insert into yyy values('hhh','uuu');

解释:从2007-09-01开始,每天对表yyy在12:00:00进行一个插入操作。而且只执行一次(on completion not preserve )

我的计划任务为:

create event sysplan
ON SCHEDULE AT '2010-05-22 23:00:00' + INTERVAL 1 DAY
on completion not preserve
do truncate table bjproj.ae_tmp;



三、通过设定全局变量event_scheduler 的值即可动态的控制事件调度器是否启用。
查看是否event_scheduler开启mysql> SHOW VARIABLES LIKE '%event%';
设置开启mysql> SET GLOBAL event_scheduler=ON;
四、例子:
每分钟插入一条日志:DELIMITER //CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 MINUTE STARTS '2010-12-27 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN INSERT INTO log SET addtime=NOW();END//
调用存储过程:DELIMITER //CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 DAY STARTS '2010-00-00 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN        CALL user_log_prov();END//
分享到:
评论

相关推荐

    mysql 让一个存储过程定时作业的代码

    在这个例子中,我们将详细讨论如何利用存储过程和事件来创建一个定时执行的任务。 首先,我们创建了一个名为`test1`的数据库。在MySQL中,通过`CREATE DATABASE`语句可以轻松创建新的数据库,这为我们的示例提供了...

    MySQL定时执行脚本(计划任务)命令实例

    MySQL定时执行脚本,也称为计划任务或事件调度,是一种非常实用的功能,允许数据库系统按照预设的时间间隔自动执行特定的SQL语句或存储过程,无需依赖操作系统级别的计划任务服务。在MySQL中,这一功能主要通过`...

    linux环境下mysql存储过程开启定时任务,bing log.rar

    例如,如果想每天凌晨1点执行一个MySQL存储过程,Cron条目可能会写成`0 1 * * * mysql -u username -p password -e "CALL your_procedure;"`。 至于"bing log",这可能是对任务执行日志的引用。在Linux中,我们可以...

    自动定时备份远程服务器的mysql数据库并存储在本地

    通过以上步骤,你可以建立一个自动定时备份远程服务器MySQL数据库并存储在本地的系统,确保数据的安全性和可恢复性。在实际操作中,还需要根据具体的服务器环境和业务需求进行适当的调整和优化。

    analyData:这是一个java定时任务,定时调用mysql的存储过程

    本项目“analyData”就是一个使用Java实现的定时任务,它的主要功能是定期调用MySQL数据库中的存储过程,以执行数据分析或处理任务。下面我们将深入探讨这个项目涉及到的关键知识点。 1. **Java定时任务**: Java...

    自动执行SQL语句&创建标准的Sql 存储过程

    例如,每当有新的订单插入,可以触发一个存储过程来计算并更新销售统计信息。 在实践中,这些功能极大地提高了数据库管理的效率和灵活性。然而,需要注意的是,过度依赖存储过程可能会增加维护难度,因为它们可能与...

    mysql存储过程(2)

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一组SQL语句并封装成一个可重复使用的对象。在“mysql存储过程(2)”这个主题中,我们可能涉及了存储过程的进阶概念、创建与管理以及它们在实际...

    mysql数据库自动定时备份

    在Windows中,你可以创建一个批处理文件,包含上述`mysqldump`命令,然后在任务计划程序中设置每天执行该批处理文件。 此外,为了方便管理和追踪备份,文件命名通常会包含日期和时间戳,例如`your_backup_file_$...

    详解SpringBoot 创建定时任务(配合数据库动态执行)

    此外,实现动态定时任务通常需要依赖一些数据库操作的库,比如这里使用的是Mybatis,它是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射。Mybatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果...

    mysql定时job

    mysql的定时job的一个简单应用,采用mysql存储过程的调用方式执行任务。该任务中涉及到使用游标来完成多个update执行过程。

    mysql七天定时下架任务

    此任务通过MySQL数据库中的事件(Event)来定时执行一个自定义的存储过程(Stored Procedure),确保每天定时检查并更新满足条件的记录。 ### 一、任务概述 #### 1.1 背景与目的 在许多网站或应用中,岗位招聘信息...

    MySQL数据库Event定时执行任务详解

    1. 建立存储过程:首先,需要创建一个存储过程,该存储过程将包含要执行的 SQL 语句。在上面的示例中,存储过程名为 `middle_proce`,它包含了多个 DELETE 语句,用于删除不同表中的不必要数据。 2. 开启 Event ...

    mysql定时备份器java版

    本软件Mysql定时备份器,目前为beta v1.0版(测试版),基于JAVA编写,运行时需JVM1.5版本以上支持.可以帮助windows环境下的mysql用户实现自动备份功能.分完全备份和增量备份,可立即执行和定期执行.点击'完全备份'和'增量...

    定时备份mysql数据库

    然后,将这个脚本添加到crontab中,设置每天、每周或每月的定时执行。例如,每天凌晨1点备份: ```bash 0 1 * * * /path/to/backup_mysql.sh ``` 对于每周和每月的备份,可以根据需要调整crontab表达式。每周一...

    存储过程Demo.zip

    本资料“存储过程Demo.zip”提供了一个完整的存储过程示例,同时涉及到事件触发机制,这对于理解和应用MySQL存储过程至关重要。 1. **存储过程的基本概念**: 存储过程是数据库中存储的一组预编译的SQL语句,可以...

    mysql 定时备份 工具 (windows环境)

    `mysqlbak`可能是一个自定义脚本或第三方软件,用于自动化MySQL的备份过程。它可能包含了创建备份、压缩备份和安排定期运行的功能。 1. **创建备份脚本**: 在Windows环境下,你可以使用批处理文件(.bat)来编写...

    Python定时任务,将xml报文解释入mysql数据库

    APScheduler是Python中的一个强大的定时任务库,它可以按照预设的时间间隔执行特定的函数。例如,你可以设置一个每天凌晨1点运行的任务,该任务会读取XML文件并将其内容导入数据库。要使用APScheduler,首先需要安装...

    mysql数据库定时备份手册

    为了实现自动化定时备份,可以利用Windows的任务计划程序来定时执行上述脚本。 1. **创建新任务**:打开“控制面板” → “管理工具” → “任务计划程序”,创建一个新的基本任务。 2. **设置触发器**:选择任务...

Global site tag (gtag.js) - Google Analytics