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;