PostgreSQL トリガー: 作成、リスト、ドロップの例

トリガーとは何ですか PostgreSQL?

A PostgreSQL トリガー データベース イベントがデータベース オブジェクトで発生したときに自動的にトリガーされる関数です。 たとえば、テーブルです。 トリガーをアクティブ化できるデータベース イベントの例には、INSERT、UPDATE、DELETE などが含まれます。さらに、テーブルのトリガーを作成すると、そのテーブルが削除されるとトリガーは自動的に削除されます。

トリガーの使用方法 PostgreSQL?

トリガーは FOR EACH ROW でマークできます。 opera作成中のtor。このようなトリガーは、 operaション。トリガーは FOR EACH STATEMENT でマークすることもできます。 opera作成中のtor。このトリガーは、特定のイベントに対して 1 回だけ実行されます。 operaる。

PostgreSQL トリガーを作成します。

トリガーを作成するには、CREATE TRIGGER 関数を使用します。 関数の構文は次のとおりです。

CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name  
ON table-name  
[  
 -- Trigger logic  
];

トリガー名はトリガーの名前です。

BEFORE、AFTER、INSTEAD OF は、トリガーをいつ呼び出すかを決定するキーワードです。

イベント名は、トリガーを呼び出すイベントの名前です。 これは可能です INSERT、更新、削除など。

table-name は、トリガーが作成されるテーブルの名前です。

INSERT 用にトリガーを作成する場合 operaこの場合、ON 列名パラメータを追加する必要があります。

次のことwing 構文はこれを示しています。

CREATE TRIGGER trigger-name AFTER INSERT ON column-name  
ON table-name  
[  
 -- Trigger logic
];

PostgreSQL トリガーの作成例

以下の価格表を使用します。

価格:

PostgreSQL トリガーを作成します。

別のテーブル、Price_Audits を作成して、Price テーブルに加えられた変更を記録します。

CREATE TABLE Price_Audits (
   book_id INT NOT NULL,
    entry_date text NOT NULL
);

これで、auditfunc という名前の新しい関数を定義できます。

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$
   BEGIN
      INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$my_table$ LANGUAGE plpgsql;

上記の関数は、新しい行 ID とレコードの作成時刻を含むレコードをテーブル Price_Audits に挿入します。

トリガー関数が完成したので、それを Price テーブルにバインドする必要があります。 トリガーにprice_triggerという名前を付けます。 新しいレコードが作成される前に、トリガー関数が自動的に呼び出され、変更が記録されます。 トリガーは次のとおりです。

CREATE TRIGGER price_trigger AFTER INSERT ON Price
FOR EACH ROW EXECUTE PROCEDURE auditfunc();

新しいレコードを Price テーブルに挿入してみましょう。

INSERT INTO Price 
VALUES (3, 400);

Price テーブルにレコードを挿入したので、Price_Audit テーブルにもレコードを挿入する必要があります。 これは、価格テーブルで作成したトリガーの結果として発生します。 これを確認してみましょう:

SELECT * FROM Price_Audits;

これにより、次のものが返されますwing:

PostgreSQL トリガーを作成します。

トリガーは正常に機能しました。

Postgres リストのトリガー

で作成したすべてのトリガー PostgreSQL pg_trigger テーブルに保存されます。 にあるトリガーのリストを表示するには、 データベースでは、以下に示すように SELECT コマンドを実行してテーブルをクエリします。

SELECT tgname FROM pg_trigger;

これは以下を返しますwing:

Postgres リストのトリガー

pg_trigger テーブルの tgname 列は、トリガーの名前を示します。

Postgres ドロップ トリガー

をドロップするには PostgreSQL トリガーの場合、次のように DROP TRIGGER ステートメントを使用します。wing 構文:

DROP TRIGGER [IF EXISTS] trigger-name 
ON table-name [ CASCADE | RESTRICT ];

トリガー名パラメーターは、削除するトリガーの名前を示します。

table-name は、トリガーを削除するテーブルの名前を示します。

IF EXISTS 句は、存在するトリガーを削除しようとします。 IF EXISTS 句を使用せずに存在しないトリガーを削除しようとすると、エラーが発生します。

CASCADE オプションを使用すると、トリガーに依存するすべてのオブジェクトを自動的に削除できます。

RESTRICT オプションを使用すると、オブジェクトがトリガーに依存している場合、トリガーは削除されません。

例:

Price テーブルの example_trigger という名前のトリガーを削除するには、次のコマンドを実行します。wing コマンド:

example_trigger という名前のトリガーを Company テーブルに削除するには、次のコマンドを実行します。wing コマンド:

DROP TRIGGER example_trigger IF EXISTS
ON Company;

pgAdminの使用

次に、pgAdmin を使用して XNUMX つのアクションすべてがどのように実行されるかを見てみましょう。

でトリガーを作成する方法 PostgreSQL pgAdminを使用する

pgAdmin を使用して Postgres でトリガーを作成する方法は次のとおりです。

ステップ 1) pgAdmin アカウントにログインします。

pgAdmin を開き、資格情報を使用してアカウントにログインします。

ステップ 2) デモ データベースを作成する

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

トリガーの作成 PostgreSQL pgAdminを使用する

ステップ 3) クエリを入力します。

Price_Audits テーブルを作成するには、エディターにクエリを入力します。

CREATE TABLE Price_Audits (
   book_id INT NOT NULL,
    entry_date text NOT NULL
)

ステップ 4) クエリを実行する

「実行」ボタンをクリックします

トリガーの作成 PostgreSQL pgAdminを使用する

ステップ 5) Auditfunc のコードを実行する

以下を実行してくださいwing 関数 Auditfunc を定義するコード:

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$
   BEGIN
      INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$my_table$ LANGUAGE plpgsql

ステップ 6) コードを実行してトリガーを作成する

以下を実行してくださいwing トリガーprice_triggerを作成するコード:

CREATE TRIGGER price_trigger AFTER INSERT ON Price
FOR EACH ROW EXECUTE PROCEDURE auditfunc()

ステップ 7) 新しいレコードを挿入する

  1. 以下を実行してくださいwing Price テーブルに新しいレコードを挿入するコマンド:
    INSERT INTO Price
    VALUES (3, 400)
  2. 以下を実行してくださいwing レコードが Price_Audits テーブルに挿入されたかどうかを確認するコマンド:
    SELECT * FROM Price_Audits

    これにより次のものが返されるはずですwing:

トリガーの作成 PostgreSQL pgAdminを使用する

ステップ8) テーブルの内容を確認する

Price_Audits テーブルの内容を確認してみましょう。

pgAdmin を使用したトリガーの一覧表示

ステップ1) 以下を実行してくださいwing データベース内のトリガーを確認するコマンド:

SELECT tgname FROM pg_trigger

これは以下を返しますwing:

pgAdmin を使用したトリガーの一覧表示

pgAdminを使用したトリガーの削除

example_trigger という名前のトリガーを Company テーブルに削除するには、次のコマンドを実行します。wing コマンド:

DROP TRIGGER example_trigger IF EXISTS
ON Company

まとめ

  • A PostgreSQL トリガーは、テーブルなどのデータベース オブジェクトでデータベース イベントが発生したときに自動的にトリガーされる関数を指します。
  • このようなデータベース イベントの例には、INSERT、UPDATE、DELETE などが含まれます。
  • トリガーは、トリガーが作成されたデータベース オブジェクトの存続期間中のみ存在します。
  • データベース オブジェクトが削除されると、トリガーも削除されます。
  • PostgreSQL トリガーは CREATE TRIGGER ステートメントを使用して作成されます。
  • 各トリガーは、トリガーが呼び出されたときに何を行うかを示す関数に関連付けられています。

このチュートリアルで使用するデータベースをダウンロードする