ALTER TRIGGER ステートメントは、データベーストリガーを有効化、無効化、コンパイル、または名前変更するために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
注意
このステートメントは既存のトリガーの宣言や定義を変更しません。トリガーを再宣言または再定義するには、CREATE TRIGGER ステートメントで OR REPLACE 句を使用してください。
前提条件
トリガーが SYS スキーマにある場合は、SYSDBA アイデンティティで接続する必要があります。そうでない場合は、トリガーは現在のユーザーのスキーマに存在するか、ユーザーには ALTER ANY TRIGGER のシステム権限が付与されていなければなりません。
さらに、DATABASE 上のトリガーを変更するには、ADMINISTER DATABASE TRIGGER のシステム権限が必要です。
構文
alter_trigger の構文は次のとおりです:
ALTER TRIGGER [ schema. ] trigger_name
COMPILE
|{ ENABLE | DISABLE }
;
セマンティクス
| 構文 | キーワードまたは構文ノード | 説明 |
|---|---|---|
| alter_trigger | schema | このトリガーが属するスキーマ名。デフォルト値は現在のユーザーのスキーマです。 |
| alter_trigger | trigger_name | 再コンパイルするトリガーの名前。 |
| alter_trigger | [ ENABLE | DISABLE ] | トリガーを有効または無効にします。 |
| alter_trigger | COMPILE | トリガーを再コンパイルします。トリガーが有効であるか無効であるかに関係なく。トリガーが依存するオブジェクトが無効な場合、データベースはそのオブジェクトを再コンパイルします。データベースがトリガーの再コンパイルに成功した場合、トリガーは有効になります。そうでない場合、データベースはエラーを返し、トリガーは引き続き無効のままです。トリガーの実行環境は作成時に決定され、再コンパイル中にデータベースはすべての永続的なコンパイラスイッチ設定を削除し、セッション上の環境を再利用してシステムテーブルを更新します。 |
例
例1:トリガー del_new_region を無効にします。
スキーマ SYS は、regions テーブルに del_new_region という名前のトリガーを作成しました。regions テーブルに対して DELETE 操作が実行されるたびに、トリガーが発火し、region_id が3より大きいレコードを reg_his テーブルに移動します。このトリガーが作成されると、データベースは自動的にそれを有効にします。その後、次のステートメントを使用してトリガーを無効にできます:
ALTER TRIGGER del_new_region DISABLE;
例2:トリガー del_new_region を有効にします。
ALTER TRIGGER del_new_region ENABLE;
トリガーを再有効化した後、DELETE ステートメントによって regions テーブルが変更されると、データベースはトリガーを発火させます。
例3:トリガー del_new_region を再コンパイルします。
ALTER TRIGGER del_new_region COMPILE;