我想在每个月初向表中插入数据,我想使用 mysql 事件。但是有人告诉我,如果我错过了那个事件(意味着如果我的服务器在预定的日期/时间关闭,那么 mysql 将不会在上线后重新运行该事件,不确定)然后 mysql 将不会再次重新运行它。
所以我创建了一个表格event_balance
,其中将记录事件。然后我创建了一个名为的事件,该事件balance_update_check
将每小时运行一次,并检查本月是否执行了事件,如果没有,则它将调用一个过程,该过程将为本月创建行,然后 event_balance
使用event_type
and更新表date
。
但我对此不满意,请检查我的代码并告诉我可以吗?如果可能,提供更好的解决方案。谢谢你的时间。
事件 balance_update_check
CREATE
EVENT `balance_update_check`
ON SCHEDULE EVERY 1 Hour
DO BEGIN
set @check_if_cont_doc:= (SELECT count(*) FROM event_balance WHERE event_type = 'doctor_contract' and monthname(event_balance.date) = monthname(CURDATE()));
set @check_if_cont_other:= (SELECT count(*) FROM event_balance WHERE event_type = 'other_contract' and monthname(event_balance.date) = monthname(CURDATE()));
IF (@check_if_cont_doc = 0) Then
call proc_leave_bal_doc_cont();
Insert into event_balance (event_type,`date`) values('doctor_contract',CURDATE())
END IF;
IF (@check_if_cont_other = 0) Then
call proc_leave_bal_other_cont();
Insert into event_balance (event_type,`date`) values('other_contract',CURDATE())
END IF;
END //