search
LoginSignup
20

More than 3 years have passed since last update.

posted at

Organization

MySQLのイベントスケジューラを使う

MySQLのイベントスケジューラを使った時の覚書です。

環境

MySQL 5.6.16

設定方法

1.スケジューラ設定を確認

イベントスケジューラを使うには、MySQLの変数'event_scheduler'の値をONにしてあげる必要があります。
まずは現在の設定がどうなっているか確認します。

show variables like '%event%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | OFF   |
+-----------------+-------+

オフになっていたので、ONにします。

set GLOBAL event_scheduler=ON;

再度設定を確認。オンになっています。

show variables like '%event%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+

2.イベントを作成

基本的な構文は以下です。

CREATE EVENT <イベント名> ON SCHEDULE <スケジュール> DO <実行するクエリ>
【詳細】https://dev.mysql.com/doc/refman/5.6/ja/create-event.html

SCHEDULEは、'AT <タイムスタンプ>'または'Every <インターバル>'を指定します。

今回は、毎日0:00に実行したいので'on schedule'に'every 1 day'、
'starts'に明日の0:00:00を指定します。

delimiter $$
create event <イベント名>
on schedule every 1 day
starts '2018-XX-XX 00:00:00'
do
begin
     <ここにクエリを書く>
end$$
delimiter ;

これでイベントが作成されました。
作成したイベント一覧を確認するには、以下コマンドを使います。

show events

3.イベントの編集

作成したイベントを編集するには、'alter event'を使用します。
'create event'と構文は同じです。

delimiter $$
alter event <イベント名>
on schedule every 1 day
starts '2018-XX-XX 00:00:00'
do
begin
     <ここにクエリを書く>
end$$
delimiter ;

4.イベントの削除

イベントの削除には、'drop event'を使用します。
後ろにイベント名を指定してあげるだけでOKです。

drop event event_name

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
20