説明
このステートメントは、新しいイベントを作成してスケジュールするために使用します。
説明
OceanBaseデータベースV4.2.5では、V4.2.5 BP2バージョンから、イベントでcallステートメントを実行してストアドプロシージャを呼び出すことがサポートされ、開始時刻や終了時刻の設定において時間式や関数が利用可能になりました。
注意
イベントはデフォルトで無効です。有効にするには、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;