PostgreSQLで特定のテーブルのトリガーを一覧表示するための3つのオプションを次に示します。
information_schema.triggers 表示
このビューには、現在のユーザーが所有しているか、 SELECT以外の特権を持っている現在のデータベース内のすべての関数とプロシージャが含まれています。 の上。
このビューの列の1つは、 event_object_tableです。 、トリガーが定義されているテーブルの名前が含まれています。
したがって、このビューを使用して、次のような特定のテーブルのトリガーを取得できます。
SELECT
trigger_schema,
trigger_name,
event_manipulation,
action_statement
FROM information_schema.triggers
WHERE event_object_table = 'film'; 結果の例:
+----------------+-----------------------+--------------------+----------------------------------------------------------------------------------------------------+
| trigger_schema | trigger_name | event_manipulation | action_statement |
+----------------+-----------------------+--------------------+----------------------------------------------------------------------------------------------------+
| public | film_fulltext_trigger | INSERT | EXECUTE FUNCTION tsvector_update_trigger('fulltext', 'pg_catalog.english', 'title', 'description') |
| public | film_fulltext_trigger | UPDATE | EXECUTE FUNCTION tsvector_update_trigger('fulltext', 'pg_catalog.english', 'title', 'description') |
| public | last_updated | UPDATE | EXECUTE FUNCTION last_updated() |
+----------------+-----------------------+--------------------+----------------------------------------------------------------------------------------------------+
ビューが返すのは、現在のユーザーが所有しているか、 SELECT以外の特権を持っているトリガー
pg_trigger カタログ
pg_catalog.pg_trigger カタログはテーブルとビューにトリガーを格納します。これは、現在のユーザーが所有している、またはトリガー on:
SELECT
tgname AS trigger_name
FROM
pg_trigger
WHERE
tgrelid = 'public.film'::regclass
ORDER BY
trigger_name; 結果の例:
+------------------------------+ | trigger_name | +------------------------------+ | RI_ConstraintTrigger_a_24890 | | RI_ConstraintTrigger_a_24891 | | RI_ConstraintTrigger_a_24900 | | RI_ConstraintTrigger_a_24901 | | RI_ConstraintTrigger_a_24915 | | RI_ConstraintTrigger_a_24916 | | RI_ConstraintTrigger_c_24907 | | RI_ConstraintTrigger_c_24908 | | RI_ConstraintTrigger_c_24912 | | RI_ConstraintTrigger_c_24913 | | film_fulltext_trigger | | last_updated | +------------------------------+
ソースを取得するために、 pg_procを含めることができます クエリで表示:
SELECT
t.tgname,
p.prosrc
FROM
pg_trigger t JOIN pg_proc p ON p.oid = t.tgfoid
WHERE
t.tgrelid = 'public.film'::regclass
ORDER BY
t.tgname; 結果の例:
+------------------------------+------------------------------------------+ | tgname | prosrc | +------------------------------+------------------------------------------+ | RI_ConstraintTrigger_a_24890 | RI_FKey_restrict_del | | RI_ConstraintTrigger_a_24891 | RI_FKey_cascade_upd | | RI_ConstraintTrigger_a_24900 | RI_FKey_restrict_del | | RI_ConstraintTrigger_a_24901 | RI_FKey_cascade_upd | | RI_ConstraintTrigger_a_24915 | RI_FKey_restrict_del | | RI_ConstraintTrigger_a_24916 | RI_FKey_cascade_upd | | RI_ConstraintTrigger_c_24907 | RI_FKey_check_ins | | RI_ConstraintTrigger_c_24908 | RI_FKey_check_upd | | RI_ConstraintTrigger_c_24912 | RI_FKey_check_ins | | RI_ConstraintTrigger_c_24913 | RI_FKey_check_upd | | film_fulltext_trigger | tsvector_update_trigger_byid | | last_updated | +| | | BEGIN +| | | NEW.last_update = CURRENT_TIMESTAMP;+| | | RETURN NEW; +| | | END | +------------------------------+------------------------------------------+
pg_proc.prosrcの内容に注意してください columnは、
\ dS コマンド
psqlを使用する場合、 \ dS コマンドは、テーブルやビューなどについて、それらに対して定義されているトリガーを含む情報をすばやく取得する方法です。
このコマンドにテーブル名を追加して、そのテーブルに関する情報だけを返すことができます。
\dS film 結果の例:
+----------------------+-----------------------------+-----------+----------+---------------------------------------+
| Column | Type | Collation | Nullable | Default |
+----------------------+-----------------------------+-----------+----------+---------------------------------------+
| film_id | integer | | not null | nextval('film_film_id_seq'::regclass) |
| title | character varying(255) | | not null | |
| description | text | | | |
| release_year | year | | | |
| language_id | smallint | | not null | |
| original_language_id | smallint | | | |
| rental_duration | smallint | | not null | 3 |
| rental_rate | numeric(4,2) | | not null | 4.99 |
| length | smallint | | | |
| replacement_cost | numeric(5,2) | | not null | 19.99 |
| rating | mpaa_rating | | | 'G'::mpaa_rating |
| last_update | timestamp without time zone | | not null | now() |
| special_features | text[] | | | |
| fulltext | tsvector | | not null | |
+----------------------+-----------------------------+-----------+----------+---------------------------------------+
Indexes:
"film_pkey" PRIMARY KEY, btree (film_id)
"film_fulltext_idx" gist (fulltext)
"idx_fk_language_id" btree (language_id)
"idx_fk_original_language_id" btree (original_language_id)
"idx_title" btree (title)
Foreign-key constraints:
"film_language_id_fkey" FOREIGN KEY (language_id) REFERENCES language(language_id) ON UPDATE CASCADE ON DELETE RESTRICT
"film_original_language_id_fkey" FOREIGN KEY (original_language_id) REFERENCES language(language_id) ON UPDATE CASCADE ON DELETE RESTRICT
Referenced by:
TABLE "film_actor" CONSTRAINT "film_actor_film_id_fkey" FOREIGN KEY (film_id) REFERENCES film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT
TABLE "film_category" CONSTRAINT "film_category_film_id_fkey" FOREIGN KEY (film_id) REFERENCES film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT
TABLE "inventory" CONSTRAINT "inventory_film_id_fkey" FOREIGN KEY (film_id) REFERENCES film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT
Triggers:
film_fulltext_trigger BEFORE INSERT OR UPDATE ON film FOR EACH ROW EXECUTE FUNCTION tsvector_update_trigger('fulltext', 'pg_catalog.english', 'title', 'description')
last_updated BEFORE UPDATE ON film FOR EACH ROW EXECUTE FUNCTION last_updated()のフィルムを更新する前