MySQL存储过程是一组SQL语句的集合,可以在执行过程中多次调用。但是怎么样让存储过程定时执行呢?
一种方法是使用定时任务工具,如Linux中的crontab或Windows中的任务计划程序。这些工具可以设置定时执行的脚本或命令,因此可以使用MySQL命令行工具执行存储过程。
#使用Linux系统的crontab实现
#在终端输入以下命令
crontab -e
#在打开的文件中添加一行
0 //设定定时的分钟数
0 //设定定时的小时数
* * * * /usr/bin/mysql -u username -p password -e "CALL procedure_name();" database_name
#之后保存修改并退出文件,接着指令会在每晚0点执行存储过程
另一种方法是使用MySQL的事件调度器,它可以在MySQL服务器上定时执行SQL语句或存储过程。但是,请注意,数据库用户必须具有事件调度器特权。
#在MySQL中,创建事件调度器
CREATE EVENT event_name
ON SCHEDULE EVERY 1 DAY
STARTS '2019-06-30 00:00:00'
ON COMPLETION PRESERVE
ENABLE
DO CALL procedure_name;
#这里的事件调度器会在每一天都执行存储过程,现在存储进度会在每晚0点启动
以上这两种方法都可以让MySQL存储过程在定时执行,用户可以根据自己的需求选择任意一种方式。