ALTER
TRIGGER
文は、データベース・トリガーの有効化、無効化、コンパイルまたは名前変更を実行します。
ここでのトピック
前提条件
トリガーがSYS
スキーマ内にある場合、SYSDBA
として接続する必要があります。そうでない場合は、トリガーが自分のスキーマ内にあるか、ALTER
ANY
TRIGGER
システム権限が必要です。
また、DATABASE
に対するトリガーを変更するには、ADMINISTER
DATABASE
TRIGGER
システム権限を所有している必要があります。
構文
alter_trigger::=
compiler_parameters_clause::=
セマンティクス
schema
トリガーが含まれているスキーマの名前。デフォルト: 自分のスキーマ。
trigger
変更するトリガーの名前。
ENABLE
トリガーを有効にします。
DISABLE
トリガーを無効にします。
RENAME TO new_name
状態を変更せずにトリガーの名前を変更します。
トリガーの名前を変更すると、USER_SOURCE
、ALL_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
が再度変更されるまで、この従業員のトリガーはデータベースによって自動的には起動されません。