数据库的定时任务

一、存储过程

1.1.创建存储过程
create procedure sp_name()
begin
.........
end

1.2.调用存储过程
1.基本语法:call sp_name()
注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

1.3.删除存储过程

1.基本语法:
drop procedure sp_name//

2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

1.4.其他常用命令

1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等

2.show create procedure sp_name
显示某一个MySQL存储过程的详细信息

1.5实例

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

1.5.1创建存储过程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.5.2实例

存储过程实例:

-    CREATE PROCEDURE timeTestThree() 
--    BEGIN 
--   update alarmdata SET Reason=replace(Reason,':',':') where (Reason LIKE '%:%' AND id<1231);
--    END; 

定时执行:

  CREATE EVENT if not exists e_timeTestThree
        on schedule every 10 minute 
         on completion preserve 
   do call timeTestThree(); 

查看状态:

-- SHOW PROCEDURE STATUS;  (查看存储过程);或者  show procedure status;
  ---SHOW VARIABLES LIKE 'event_scheduler'; (事件计划是否开启):OFF代表没有开启

SET GLOBAL event_scheduler = ON;开启

SET GLOBAL event_scheduler =OFF; 关闭;

1.6定时执行

mysql怎么让一个存储过程定时执行
查看event是否开启: show variables like '%sche%'; 或者 SHOW VARIABLES LIKE 'event_scheduler'; 

OFF表示关闭。那么,可以使用 sql去开启事件执行

SET GLOBAL event_scheduler = ON; 

到此就可以定时执行执行的过程。

将事件计划开启: set global event_scheduler=1; 
关闭事件任务: alter event e_test ON COMPLETION PRESERVE DISABLE; 
开户事件任务: alter event e_test ON COMPLETION PRESERVE ENABLE; 

参考:

https://blog.csdn.net/qq_26562641/article/details/53301407

https://blog.csdn.net/wq1039822486/article/details/79637168

https://blog.csdn.net/shui0527/article/details/52816788

https://www.cnblogs.com/cxxjohnson/p/5965194.html

https://www.cnblogs.com/oskyhg/p/7679962.html

猜你喜欢

转载自blog.csdn.net/manmanlu2006/article/details/89335066