Oracle でトリガーを無効にする方法

Oracle Detorigawo Wu Xiaonisuru Fang Fa



データベース トリガー (略してトリガー) は、特定のデータベース オブジェクト内のイベント アクティビティへの応答として実行されるストアド プロシージャを指します。

これは、ユーザーからの明示的な呼び出しを必要とする標準のストアド プロシージャとは異なります。トリガーは自動化されているため、接続されているユーザーまたはサーバーの状態に関係なく、指定されたイベントが発生したときにトリガーまたは起動されます。







ほとんどのリレーショナル データベースは、トリガーを使用して、無効なトランザクションの防止、イベント ログ、テーブル アクセス統計の取得と記録などの自動化されたタスクを実行することをサポートしています。



トリガーが作成されると、関連付けられたイベントが発生するたびに常に実行されます。ただし、トリガーの実行を一時的または永続的に防止したい場合があります。ここで、トリガー無効化機能の出番です。



この投稿では、Oracle データベース内でトリガーを無効にするための迅速かつ簡単な手順について説明します。 Oracle トリガーを初めて使用し、その作成方法を知りたい場合は、次のリンクを確認してください。





https://linuxhint.com/oracle-create-trigger

テストトリガーの作成

トリガーを無効にする方法について説明する前に、デモンストレーション用のサンプル トリガーを設定しましょう。



ノート 注: このセクションでは、データベース トリガーの定義または使用方法については説明しません。

削除操作後のユーザー アクティビティをログに記録するトリガーを作成します。たとえば、次のような情報を持つ sample_data テーブルがあるとします。

最初に、すべての削除アクティビティのログを保存するテーブルを作成する必要があります。

テーブル スキーマは次のとおりです。

テーブル sample_data_logs を作成します(
ID番号、
first_name varchar2(50),
ip_address varchar2(20),
btc_address varchar2(50),
credit_card varchar2(50),
識別子 varchar2(40),
delete_date 日付、
deleted_by varchar2(20)
);

次に、削除イベントの後に実行されるトリガーを定義する必要があります。トリガー定義は次のように提供されます。

トリガー log_user の作成または置換
削除後
sample_data で
行ごとに
宣言する
action_username varchar2(20);
始める
デュアルから action_username にユーザーを選択します。
sample_data_logs に挿入
値 (:OLD.id,
:OLD.first_name,
:OLD.ip_address,
:OLD.btc_address,
:OLD.credit_card,
:OLD.識別子、
システムデート、
action_username);
終わり;

トリガーをテストするには、次のように sample_data テーブルから削除操作を実行します。

id = 1 の sample_data から削除します。

最後に、ログ テーブルをチェックして、削除操作が記録されていることを確認します。

select * from sample_data_logs;

出力:

ご覧のとおり、テーブルには削除前の以前のデータのエントリと、削除アクティビティを実行したユーザー名と削除時刻が含まれています。

次のセクションでは、前のトリガーを無効にする方法を示します。これを行う前に、ターゲット トリガーが機能していることと、それを有効または無効にするための十分な権限があることを確認してください。

PL/SQLを使用したトリガーの無効化

トリガーを無効にする最初の最も簡単な方法は、SQL ステートメントを使用することです。幸いなことに、Oracle は ALTER TRIGGER ステートメントを提供しており、その構文は次のとおりです。

ALTER TRIGGER トリガー名 DISABLE;

たとえば、前に作成した log_user トリガーを無効にするには、次を実行します。

トリガー log_user 無効化を変更します。

以下に示すように、実行されると、トリガーは古いデータと削除を実行したユーザーのコピーを保持しなくなります。

id = 2 の sample_data から削除します。

ログを確認します。

select * from sample_data_logs;

出力:

ご覧のとおり、まだ 1 つのレコードしかありません。

SQL Developerを使用してトリガーを無効にする

SQL Developer ユーティリティを使用して、グラフィカル インターフェイスでトリガーを無効にすることができます。まず、SQL Developer にログインします。

「トリガー」セクションに移動します。

トリガー ディレクトリを展開し、無効にするトリガーを見つけます。トリガー名を右クリックし、「無効にする」を選択します。

「無効にする」操作を確認し、「適用」をクリックします。

無効にすると、Oracle はトリガーをグレー表示し、非アクティブであることを示します。

結論

この記事では、PL/SQL ステートメントと SQL Developer ユーティリティを使用して Oracle トリガーを無効にする方法について説明しました。