存储过程:
DELIMITER //
CREATE PROCEDURE RESET_DEFAULT_SET_PROCEDURE()
BEGIN
#定义变量 格式:DECLARE 变量名称 类型;
DECLARE V_INIT_BUYER_EXIST_TASK_NUM varchar(500);
#开始事物
start transaction;
#给变量赋值
SELECT CONF_VALUE INTO V_INIT_BUYER_EXIST_TASK_NUM FROM sys_config WHERE CONF_KEY = 'buy.buyer.day_exist_task_num';
#操作表
UPDATE buyer SET today_exit_nums = 0 , today_exit_surplust_nums = V_INIT_BUYER_EXIST_TASK_NUM;
#提交事物
commit;
END;
//
DELIMITER ;
#### 删除存储过程 ####
DROP PROCEDURE IF EXISTS RESET_DEFAULT_SET_PROCEDURE;
#### 手动调用存储过程 ####
CALL RESET_DEFAULT_SET_PROCEDURE(); ## CALL 存储过程名字
定时任务:
要想保证定时任务能正常执行event,则必须保证定时任务处于正常开启状态,查询定时任务是否已经开启,如果已开启,输出结果是 yes,没开启就是 no
SELECT @@event_scheduler;
SHOW VARIABLES LIKE 'event%';
开启定时任务
set GLOBAL event_scheduler = 1;
SET GLOBAL event_scheduler = ON;
创建定时任务
CREATE EVENT RESET_DEFAULT_SET_JOB
ON SCHEDULE EVERY 1 DAY STARTS timestamp(adddate(date(sysdate()),1)) ##这里是设置执行周期,当前设定为每天凌晨12点执行一次,
ON COMPLETION PRESERVE
DO
CALL RESET_DEFAULT_SET_PROCEDURE();
删除定时任务
DROP EVENT IF EXISTS RESET_DEFAULT_SET_JOB;
查询定时任务
select * from mysql.event
注意:真实的开发环境中,会遇到mysql服务重启或者断电的情况,此时则会出现事件调度器被关闭的情况,所有事件都不在起作用,要想解决这个办法,则需要在mysql.ini文件中加入event_scheduler = ON; 的语句