MySQLイベントは、スケジュールに従って実行されるタスクです。イベントを作成するときは、日付と時刻の1つ以上の定期的な間隔で、開始と終了の実行の準備ができている1つ以上のSQLステートメントを含む名前付きデータベースオブジェクトを作成します。 Task Scheduler
に似ています Windowsまたはcrontab
UNIXの場合。
- イベントは、その名前と割り当てられたスキーマによって一意に識別されます。
- スケジュールに従って特定のアクションを1回または繰り返し実行します。
- GitHub®、Dropbox®、GoogleDrive®、OneDrive®からファイルをインポートして保存します。
- マークダウンファイルとHTMLファイルをDillingerにドラッグアンドドロップします。
- ドキュメントをMarkdown、HTML、PDFとしてエクスポートします。
まず、イベントスケジューラのステータスを検証する必要があります。特別なイベントスケジューラスレッドがイベントを実行します。実行中、ユーザーがSHOW PROCESSLIST
の出力でプロセス権限を持っている場合、ユーザーはイベントスケジューラスレッドとその現在の状態を確認できます。 。
例
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: root
Host: localhost
db: NULL
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 2. row ***************************
Id: 2
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 3
State: Waiting for next activation
Info: NULL
2 rows in set (0.00 sec)
イベントスケジューラが有効になっていない場合は、 event_schedulerを設定します 有効にして開始するsystemvariable:
SET GLOBAL event_scheduler = ON;
SET @@GLOBAL.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@GLOBAL.event_scheduler = 1;
同様に、 event_schedulerを設定します 無効またはオフにするシステム変数:
SET GLOBAL event_scheduler = OFF;
SET @@GLOBAL.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@GLOBAL.event_scheduler = 0;
CREATEEVENTステートメントは新しいイベントを作成します。これは、CREATEEVENTステートメントの基本的な構文です。
CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
DO
event_body
イベントが1回限りのイベントの場合は、次を使用します。
AT timestamp [+ INTERVAL]
イベントが定期的なイベントである場合は、次を使用します:
EVERY interval STARTS timestamp [+INTERVAL] ENDS timestamp [+INTERVAL]
例:
CREATE EVENT [IF NOT EXIST] test_event
ON SCHEDULE EVERY 10 SECONDS
DO
INSERT INTO database VALUES (now());
結果:
1 2021-02-23 15:44:05
2 2021-02-23 15:44:15
3 2021-02-23 15:44:25
4 2021-02-23 15:44:35
5 2021-02-23 15:44:45
6 2021-02-23 15:44:55
7 2021-02-23 15:45:05
8 2021-02-23 15:45:15
9 2021-02-23 15:45:25
10 2021-02-23 15:45:35
ユーザーがイベントを作成、変更、または削除できるようにするには、権限を提供する必要があります。
GRANT EVENT ON (schema) TO (user)
たとえば、次のコマンドはスキーマ myschemaの権限を付与します lin @ tolvarというユーザーに 。
GRANT EVENT ON myuschema TO lin@tolvar
アスタリスク(*)を使用する場合は、すべてのスキーマにアクセス許可を付与します。