PostgreSQL トリガーの作成・削除・一覧表示について
このページでは、PostgreSQLでの「トリガー」の作成、削除、一覧表示について詳しく解説します。初心者向けに具体的な例を交えて説明しますので、トリガーを使ったデータベース操作を理解しやすくなります。
トリガーを作成する (CREATE TRIGGER)
PostgreSQLにおける「トリガー」とは、特定のデータベースイベント(INSERT、UPDATE、DELETEなど)が発生したときに自動的に実行される一連のアクションを定義するものです。トリガーは、データベースの整合性を保つために非常に有用です。
トリガーを作成するためには、CREATE TRIGGER
文を使用します。一般的な構文は以下の通りです:
CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name FOR EACH {ROW | STATEMENT} EXECUTE FUNCTION function_name();
ここでの重要な部分は、トリガーを実行するタイミング(BEFOREまたはAFTER)、操作の種類(INSERT、UPDATE、DELETE)、トリガーを適用するテーブル名、そして実行する関数です。
例えば、テーブル「employees」に新しい行が挿入される前に自動的に実行されるトリガーを作成する場合、以下のように記述します:
CREATE FUNCTION check_salary() RETURNS trigger AS $$ BEGIN IF NEW.salary < 30000 THEN RAISE EXCEPTION 'Salary must be greater than or equal to 30000'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER salary_check BEFORE INSERT ON employees FOR EACH ROW EXECUTE FUNCTION check_salary();
この例では、従業員の給与が30000未満であれば、エラーを発生させるトリガーを作成しています。「BEFORE INSERT」によって、新しい行が挿入される前に給与チェックを実行します。
トリガーの一覧を表示する
データベースに存在するトリガーを一覧表示するには、pg_trigger
システムテーブルを参照します。次のSQL文でトリガーの一覧を確認できます:
SELECT tgname FROM pg_trigger WHERE NOT tgisinternal;
このクエリは、システム内部で使用されるトリガーを除いたすべてのトリガー名を返します。トリガーが正常に作成されていれば、作成したトリガー名が表示されます。
トリガーを削除する (DROP TRIGGER)
もし、不要になったトリガーを削除したい場合は、DROP TRIGGER
文を使用します。トリガーを削除する際には、そのトリガーが適用されているテーブルを指定する必要があります。構文は以下の通りです:
DROP TRIGGER trigger_name ON table_name;
例えば、「employees」テーブルに作成した「salary_check」トリガーを削除する場合、次のように記述します:
DROP TRIGGER salary_check ON employees;
これにより、指定したテーブルに関連するトリガーが削除されます。トリガーが削除されると、そのトリガーに関連する自動処理はもう実行されません。