开启事件:
show variables like '%sche%'; // 查询
set global event_scheduler = 1; // 设置开启
通过上面的方式开启事件,MySql服务重启以后就会失效。
永久开启事件:
// 编辑 MySql 配置文件
vi /etc/mysql/my.cnf
// 添加如下:
[mysqld]
event_scheduler=ON
// 重启mysql服务
systemctl restart mysqld
定义函数或过程update_article():
BEGIN
UPDATE cms_article_list SET is_valid = 0 WHERE UNIX_TIMESTAMP()-365*24*60*60 > article_update_time AND restore != 1;
END
定义事件:
call update_article(); // 调用函数或过程
// 或者直接执行sql语句,如:UPDATE ......
设置计划:
# 通过Sql语句创建事件,如:
-- ----------------------------
-- Event structure for auto_check_dinner
-- ----------------------------
DROP EVENT IF EXISTS `auto_check_dinner`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` EVENT `auto_check_dinner` ON SCHEDULE EVERY 1 DAY STARTS '2023-07-17 16:35:00' ON COMPLETION NOT PRESERVE ENABLE DO UPDATE `order` SET `status` = 1 WHERE `status` = 0;
;;
DELIMITER ;
查询处理程序:
SHOW PROCESSLIST;