ヘッダーをスキップ
Oracle® Database PL/SQL言語リファレンス
11gリリース2 (11.2)
B56260-09
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

ALTER TRIGGER文

ALTER TRIGGER文は、データベース・トリガーの有効化、無効化、コンパイルまたは名前変更を実行します。


注意:

この文では、既存のトリガーの宣言または定義は変更されません。トリガーを再宣言または再定義するには、CREATE TRIGGER文OR REPLACE句とともに使用します。

ここでのトピック

前提条件

トリガーがSYSスキーマ内にある場合、SYSDBAとして接続する必要があります。そうでない場合は、トリガーが自分のスキーマ内にあるか、ALTER ANY TRIGGERシステム権限が必要です。

また、DATABASEに対するトリガーを変更するには、ADMINISTER DATABASE TRIGGERシステム権限を所有している必要があります。


関連項目:

DATABASEトリガーに基づくトリガーの詳細は、「CREATE TRIGGER文」を参照してください。

構文

alter_trigger::=

alter_trigger.gifの説明が続きます。
alter_trigger.gifの説明

compiler_parameters_clause::=

compiler_parameters_clause.gifの説明が続きます
compiler_parameters_clause.gifの説明

セマンティクス

schema

トリガーが含まれているスキーマの名前。デフォルト: 自分のスキーマ。

trigger

変更するトリガーの名前。

ENABLE

トリガーを有効にします。

DISABLE

トリガーを無効にします。

RENAME TO new_name

状態を変更せずにトリガーの名前を変更します。

トリガーの名前を変更すると、USER_SOURCEALL_SOURCEおよびDBA_SOURCE静的データ・ディクショナリ・ビューに記憶されているトリガーのソースが再構築されます。その結果、トリガー・ソースが変更されていない場合でも、これらのビューのTEXT列のコメントおよび書式設定が変更されることがあります。

COMPILE

有効か無効かに関係なくトリガーが再コンパイルされます。

まず、トリガーが依存するいずれかのオブジェクトが無効の場合、データベースによってそれらが再コンパイルされます。

トリガーは、データベースによって正常に再コンパイルされた場合に有効になります。それ以外の場合は、データベースによってエラーが戻され、トリガーは無効なままになります。

再コンパイル中、データベースによってコンパイラの永続的なスイッチ設定はすべて削除され、セッションから再度取得されて、コンパイル後に格納されます。この処理を回避するには、REUSE SETTINGSを指定します。

DEBUG

トリガーに対する動作は、ファンクションに対する動作と同様です。詳細は、「DEBUG」を参照してください。


関連項目:

ストアド・サブプログラムで使用可能な機能と同じ機能を使用したトリガーのデバッグの詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。

REUSE SETTINGS

トリガーに対する動作は、ファンクションに対する動作と同様です。詳細は、「REUSE SETTINGS」を参照してください。

compiler_parameters_clause

トリガーに対する動作は、ファンクションに対する動作と同様です。詳細は、「ALTER FUNCTION」のcompiler_parameters_clauseを参照してください。

トリガーの無効化: 例 サンプル・スキーマhrには、employees表に作成されたupdate_job_historyという名前のトリガーがあります。このトリガーは、UPDATE文によって従業員のjob_idが変更されるたびに起動されます。このトリガーによって、従業員のID、最後のジョブの開始日と終了日およびジョブのIDと部門を含む行がjob_history表に挿入されます。

このトリガーは、作成後、データベースによって自動的に有効にされます。その後、次の文を使用してこのトリガーを無効にすることができます。

ALTER TRIGGER update_job_history DISABLE;
 

トリガーが無効になっている場合は、UPDATE文によって従業員のジョブが変更されても、データベースによってトリガーは起動されません。

トリガーの有効化: 例 トリガーを無効にした後、次の文を使用してそのトリガーを有効にすることができます。

ALTER TRIGGER update_job_history ENABLE; 

トリガーを再度有効にすると、UPDATE文によって従業員のジョブが変更されるたびに、データベースによってトリガーが起動されます。トリガーが無効になっている場合に従業員のジョブが更新されると、別のトランザクションによってjob_idが再度変更されるまで、この従業員のトリガーはデータベースによって自動的には起動されません。