説明
このステートメントは、新しいイベントを作成してスケジュールするために使用されます。
説明
OceanBaseデータベースV4.3.5では、V4.3.5 BP2バージョンからEVENTはcallステートメントを使用してストアドプロシージャを呼び出し、開始時間または終了時間の設定時に時間式と関数をサポートします。
注意
EVENTはデフォルトで無効なため、SET GLOBAL event_scheduler = 1;コマンドを実行して有効にする必要があります。この構成パラメータの詳細については、event_schedulerを参照してください。
権限要件
このステートメントを実行するユーザーにはCREATE権限が付与されている必要があります。OceanBaseデータベースの権限の詳細については、MySQLモードの権限分類を参照してください。
構文
CREATE
[DEFINER = user]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE] //デフォルトでは作成後にENABLE
[COMMENT 'string']
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}
使用方法と注意点
EVERY intervalでSTART TIMEとEND TIMEを設定しない場合、イベントは無限に実行されます。- 繰り返しイベントの場合、イベントの実行時間がスケジュール間隔より長いと、同一時間に複数のイベントが発生する可能性があるため、ユーザー自身が実行時間がスケジュール間隔より短くなるように保証する必要があります。
- 最大実行時間を設定することはできません(1回のイベントの最大実行時間は24時間)。
- 1つのイベントを使用して別のイベントを作成することは推奨されません。
- 既に開始されたイベントは、スケジュール計画を変更することができません。
- 既に開始されたイベントは、
event_nameを変更しないでください。そうしないと、正しく終了できない可能性があります。 - このイベントが連続して16回失敗した場合、実行が停止されます。
パラメータの説明
| パラメータ | 説明 |
|---|---|
| IF NOT EXISTS | イベントが既に存在する場合、作成しないように指示します。イベントを作成する際、イベントが存在し、IF NOT EXISTS が指定されていない場合はエラーが報告されます。 |
| event_name | 作成するイベントの名前を指定します。 |
| DEFINER | オプションパラメータで、イベントを実行するユーザーを指定します。現在、カスタムユーザーはサポートされておらず、デフォルトは現在のユーザーです。 |
| ON SCHEDULE schedule | イベントの実行時間と頻度を定義します。タイムスタンプ+INTERVALをサポートしており、「2020-12-01 00:00:00」+ INTERVAL 1 DAY のように記述します。時間は整数でなければならず、時間単位はYEAR、MONTH、DAY、HOUR、MINUTE、SECONDをサポートします。 |
| ON COMPLETION [NOT] PRESERVE | イベントの実行完了後にイベントを保持するかどうかを定義します。デフォルトでは保持されません(NOT PRESERVE)、つまりイベントの実行完了後に自動的に削除されます。 |
| ENABLE、DISABLE、DISABLE ON SLAVE | イベントの状態を定義します。デフォルトでは、ENABLE として作成されたイベントは作成後すぐに有効になります。DISABLE として作成されたイベントは無効になり、手動で有効にされるまで自動的に実行されません。DISABLE ON SLAVE はレプリケーション環境でのみ使用され、サーバー上でイベントは実行されません。 |
| COMMENT 'string' | オプションパラメータで、イベントにコメントを追加します。 |
| DO event_body | 実行するSQL文を定義します。現在、単一のSQL文と、BEGIN END で囲まれた複数のSQL文をサポートしています。 |
例
obclient> CREATE EVENT myevent
ON SCHEDULE AT '2024-07-01 00:00:00' + INTERVAL 1 HOUR
DO
UPDATE myschema.mytable SET mycol = mycol + 1;