14.5 ALTER TRIGGER文
ALTER TRIGGER文は、データベース・トリガーの有効化、無効化、コンパイルまたは名前変更を実行します。
ノート:
この文では、既存のトリガーの宣言または定義は変更されません。トリガーを再宣言または再定義するには、「CREATE TRIGGER文」をOR REPLACE句とともに使用します。
ここでのトピック
前提条件
トリガーがSYSスキーマ内にある場合、SYSDBAとして接続する必要があります。そうでない場合は、トリガーが自分のスキーマ内にあるか、ALTER ANY TRIGGERシステム権限が必要です。
また、DATABASEに対するトリガーを変更するには、ADMINISTER DATABASE TRIGGERシステム権限を所有している必要があります。
関連項目:
DATABASEトリガーに基づくトリガーの詳細は、「CREATE TRIGGER文」を参照してください
構文
alter_trigger ::=
セマンティクス
alter_trigger
IF EXISTS
トリガーが存在する場合は、トリガーを有効化、無効化、コンパイルまたは名前変更します。このようなトリガーが存在しない場合、文はエラーなしで無視されます。
schema
トリガーが含まれているスキーマの名前。デフォルト: 自分のスキーマ。
trigger_name
変更するトリガーの名前。
[ ENABLE | DISABLE ]
トリガーを有効または無効にします。
RENAME TO new_name
状態を変更せずにトリガーの名前を変更します。
トリガーの名前を変更すると、*_SOURCE静的データ・ディクショナリ・ビューに記憶されているトリガーのソースが再構築されます。その結果、トリガー・ソースが変更されていない場合でも、これらのビューのTEXT列のコメントおよび書式設定が変更されることがあります。
{ EDITIONABLE | NONEDITIONABLE }
schemaでスキーマ・オブジェクト・タイプTRIGGERに対して後からエディションが有効化された場合に、トリガーがエディション・オブジェクトまたは非エディション・オブジェクトのどちらになるかを指定します。デフォルト: EDITIONABLE。エディション・オブジェクトと非エディション・オブジェクトの変更の詳細は、『Oracle Database開発ガイド』を参照してください。
NONEDITIONABLEの制限
crosseditionトリガーに対してNONEDITIONABLEを指定できません。
trigger_compile_clause
有効か無効かに関係なくトリガーが再コンパイルされます。
compile_clauseおよびcompiler_parameters_clauseのセマンティクスを参照してください。例
例14-5 トリガーの無効化
サンプル・スキーマhrには、employees表に作成されたupdate_job_historyという名前のトリガーがあります。このトリガーは、UPDATE文によって従業員のjob_idが変更されるたびに起動されます。このトリガーによって、従業員のID、最後のジョブの開始日と終了日およびジョブのIDと部門を含む行がjob_history表に挿入されます。
このトリガーは、作成後、データベースによって自動的に有効にされます。その後、次の文を使用してこのトリガーを無効にすることができます。
ALTER TRIGGER update_job_history DISABLE;
トリガーが無効になっている場合は、UPDATE文によって従業員のジョブが変更されても、データベースによってトリガーは起動されません。
例14-6 トリガーの有効化
トリガーを無効化した後に、この文を使用してそれを有効化できます。
ALTER TRIGGER update_job_history ENABLE;
トリガーを再度有効にすると、UPDATE文によって従業員のジョブが変更されるたびに、データベースによってトリガーが起動されます。トリガーが無効になっている場合に従業員のジョブが更新されると、別のトランザクションによってjob_idが再度変更されるまで、この従業員のトリガーはデータベースによって自動的には起動されません。

