20
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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
20
26
0

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
  3. You can use dark theme
What you can do with signing up
20
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?