説明
このステートメントは、新しいイベントを作成し、スケジュールを設定します。
説明
OceanBaseデータベースV4.2.5では、V4.2.5 BP2バージョンから、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が無制限に実行されます。- 繰り返しイベントにおいて、イベントの実行時間がスケジュール間隔より長い場合、同じ時間に複数のイベントが発生する可能性があります。実行時間がスケジュール間隔より短くなるよう、ユーザーが自ら保証する必要があります。
- 最大実行時間を設定することはできません(単発イベントの最大実行時間は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;