毎月の初めにテーブルにデータを挿入したいのですが、mysqlイベントを使用します。しかし、誰かが私に、そのイベントを見逃した場合 (サーバーがスケジュールされた日付/時刻にダウンした場合、mysql はオンラインになった後にそのイベントを再実行しないことを意味します)、mysql はそれを再実行しないと言いました。
event_balance
そのため、イベントがログに記録されるセル化されたテーブルを作成しました。次に、毎時間実行されるというイベントを作成し、balance_update_check
今月のイベントが実行されたかどうかを確認します。そうでない場合は、今月の行を作成し、テーブルを更新するプロシージャを 呼び出しevent_balance
ます。event_type
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 //