ヘッダーをスキップ
Oracle Database PL/SQL言語リファレンス
11g リリース1(11.1)
E05670-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

ALTER TRIGGER文

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


注意:

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

前提条件

トリガーが自身のスキーマ内にある必要があります。自身のスキーマ内にない場合は、ALTER ANY TRIGGERシステム権限が必要です。

また、DATABASEに対するトリガーを変更するには、データベース・イベントに対するADMINISTERシステム権限が必要です。


参照:

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

構文

alter_trigger::=

alter_trigger
alter_trigger.gifの説明

compiler_parameters_clause::=

compiler_parameters_clause
compiler_parameters_clause.gifの説明

キーワードとパラメータの説明

schema

トリガーが含まれているスキーマを指定します。 schemaを省略すると、トリガーは自身のスキーマ内に存在するとみなされます。

trigger

変更するトリガーの名前を指定します。

ENABLE | DISABLE

ENABLEを指定すると、トリガーを有効にできます。 ALTER TABLEENABLE ALL TRIGGERS句を使用して、表に関連付けられているすべてのトリガーを有効にすることもできます。 詳細は、『Oracle Database SQL言語リファレンス』のALTER TABLE文に関する項を参照してください。

DISABLEを指定すると、トリガーを無効にできます。 ALTER TABLEDISABLE ALL TRIGGERS句を使用して、表に関連付けられているすべてのトリガーを無効にすることもできます。

RENAME句

RENAME TO new_nameを指定すると、トリガーの名前を変更できます。データベースによってトリガーの名前が変更され、トリガーの状態は名前の変更前と同じままになります。

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

COMPILE句

COMPILEを指定すると、有効か無効かに関係なくトリガーを明示的にコンパイルすることができます。 明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、また、実行時のコンパイル・エラーとパフォーマンス上のオーバーヘッドもなくなります。

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

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

トリガーの再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラーが戻され、トリガーは無効なままになります。 関連付けられているコンパイラ・エラー・メッセージは、SQL*PlusコマンドSHOW ERRORSを使用して確認できます。

DEBUG

DEBUGを指定すると、PL/SQLデバッガで使用するためのコードを生成して格納するようにPL/SQLコンパイラに指示できます。 この句を指定した場合の効果は、compiler_parameters_clausePLSQL_DEBUG = TRUEを指定した場合と同じです。


参照:

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

compiler_parameters_clause

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

REUSE SETTINGS

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

トリガーの無効化: 例 サンプル・スキーマ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が再度変更されるまで、この従業員のトリガーはデータベースによって自動的には起動されません。

関連トピック