MySQL Event calls stored procedures regularly

Open Event Program

mysql> show variables like '%event%'
mysql> set GLOBAL event_scheduler = 1;  

Start by setting on the MySQL command line. After restarting MySQL, the setting will become invalid. If you want this setting to still be valid after restarting, then set my.cnf event_scheduler=ON in the MySQL configuration file my.cnf.

query event

select * from mysql.event

create event

# 创建一个简单的存储过程,用来测试,比如查询当前时间
CREATE DEFINER=`root`@`%` PROCEDURE `SELECT_TIME`()
BEGIN
	select now();
END

# 定时调存储过程
CREATE DEFINER=`root`@`%` EVENT if not exists `SELECT_TIME_EVENT` 
ON SCHEDULE EVERY 1 DAY STARTS '2018-11-25 01:30:00'
ON COMPLETION PRESERVE 
DO CALL topdb_dev.SELECT_TIME();

explain:

  • Create SELECT_TIME_EVENT event
  • Start the event at 01:30:00 on 2018-11-25, and execute it every day at 01:30:00
  • After the ON COMPLETION PRESERVE event is completed, the event remains.
    After the ON COMPLETION NOT PRESERVE event is completed, the event will be deleted
  • CALL topdb_dev.SELECT_TIME() calls the SELECT_TIME stored procedure

modify event

ALTER EVENT event_name
[ON SCHEDULE schedule]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT ‘comment’]
[ENABLE | DISABLE]
DO sql_statement]

ALTER EVENT SELECT_TIME_EVENT DISABLE; # 禁用
ALTER EVENT SELECT_TIME_EVENT ENABLE; # 启用
ALTER EVENT SELECT_TIME_EVENT ON SCHEDULE EVERY 5 DAY; 
ALTER EVENT SELECT_TIME_EVENT ON SCHEDULE EVERY 100 DAY STARTS '2018-11-25 15:45:00';

delete event

DROP EVENT [IF EXISTS] event_name

DROP EVENT IF EXISTS topdb_dev.SELECT_TIME_EVENT

Reference URL
https://blog.csdn.net/qq_26562641/article/details/53301407
https://bbs.csdn.net/topics/320033700

Guess you like

Origin blog.csdn.net/u011886447/article/details/104935211