mysqlイベント(event)

7581 ワード

【まとめ】簡単なケース
SET GLOBAL event_scheduler=1
delimiter $$
create definer = current_user event `test`.`event_table1` on schedule every 5 second -- 5 `table1` on completion preserve enable comment ' 5 `table1` ' do begin insert into `table1` values(null, now()); end$$ delimiter ; -- :https://blog.csdn.net/qq_34845394/article/details/90038250

 
【0】本文MySQLのイベント(event)は、Linuxのcrontabのようなタイミングまたは周期的なタスクを実行するために使用されるが、後者は分までしか正確ではなく、イベントは秒まで正確である.
MySQL自身がタイミングタスクを実現できる以上、アプリケーション層で実現する必要はありません.イベントは、特定のスレッド、すなわちいわゆるイベントスケジューラによって管理されますが、イベントは直接呼び出すことはできません.
MySQLでスケジューラevent_schedulerはイベントを呼び出す責任を負います.つまり、グローバル変数event_によって呼び出されます.schedulerの状態決定、デフォルトはOFF、一般はOFF
show variables like '%event_scheduler%';+-----------------+-------+| Variable_name | Value |+-----------------+-------+| event_scheduler|OFF|+----------------------+-------++++開く方法:SET GLOBAL event_scheduler=1で、閉じるのはもちろん0です.
 
イベントを作成する構文:
CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body;

schedule:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]

interval:
quantity { YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND }

 
event_name:作成されたevent名(一意に確定).ON SCHEDULE:計画タスク.schedule:eventの実行時間と頻度を決定し(時間は必ず将来の時間で、過去の時間はエラーになることに注意)、ATとEVERYの2つの形式があります.[ON COMPLETION[NOT]PRESERVE]:オプション可能、デフォルトはON COMPLETION NOT PRESERVEつまり計画任務の実行が終わった後に自動的にこの事件をdropする;ON COMPLETION PRESERVEはdropを落とさない.[COMMENT‘comment’:イベントを記述するためのオプション.相当コメント、最大長64バイト.[ENABLE|DISABLE]:eventの状態を設定し、デフォルトENABLE:システムがこのイベントを実行しようとしていることを示します.DISABLE:この件を閉じてalterでDO event_を修正できますbody:実行するsql文(複合文でもよい).1分ごとにテーブルにデータを挿入します.
create event test.event_minute on schedule every 1 minute
do insert into events_list values('event_now', now());

2017年の所定時間から、ストレージ・プロシージャClearHis(2)が1年ごとに呼び出されます.
CREATE EVENT `e_ClearHis` ON SCHEDULE EVERY 1 YEAR STARTS '2017-03-07 02:00:00'
ON COMPLETION PRESERVE ENABLE 
DO call ClearHis(2);

現在のライブラリのイベントを表示するには、次の手順に従います.
show events;

削除せずにイベントを変更できます.たとえば、最初の例を30秒間隔で変更します.
alter event test.event_minute
on schedule 
every 30 second 
do insert into events_list values('event_now', now());

 
上の例を非アクティブと再アクティブに変更
alter event test.event_second disable;
alter event test.event_second enable;

 
イベントの削除
DROP EVENT [IF EXISTS] event_name

 
————————————————著作権声明:本文はCSDNブロガー「SilentAssassin」のオリジナル文章であり、CC 4.0 BY-SA著作権協定に従い、原文出典リンク及び本声明を転載してください.テキストリンク:https://blog.csdn.net/yao5hed/article/details/81059864
転載先:https://www.cnblogs.com/gered/p/11488279.html