数据库的定时任务

创建存储过程

create procedure sp_name()
begin
.........
end

调用存储过程

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

删除存储过程

  • 基本语法:
drop procedure sp_name
  • 注意事项
    1.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

其他常用命令

1.show procedure status

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

2.show create procedure sp_name

显示某一个MySQL存储过程的详细信息

实例

  • 简单实例.
创建表 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字段中去

实例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; 关闭;

定时执行

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容