PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

2 Möglichkeiten zum Auflisten aller Trigger in einer PostgreSQL-Datenbank

Hier sind zwei Optionen zum Auflisten der Trigger in einer PostgreSQL-Datenbank.

Die information_schema.triggers Anzeigen

Diese Ansicht enthält alle Funktionen und Prozeduren in der aktuellen Datenbank, die der aktuelle Benutzer besitzt oder über eine andere Berechtigung als SELECT verfügt An.

Hier ist ein Beispiel für die Rückgabe einer Liste von Triggern:

SELECT
    trigger_schema,
    trigger_name,
    event_object_table
FROM 
    information_schema.triggers
ORDER BY 
    event_object_table;

Beispielergebnis:

+----------------+-----------------------+--------------------+
| trigger_schema |     trigger_name      | event_object_table |
+----------------+-----------------------+--------------------+
| public         | last_updated          | actor              |
| public         | last_updated          | address            |
| public         | last_updated          | category           |
| public         | last_updated          | city               |
| public         | last_updated          | country            |
| public         | last_updated          | customer           |
| public         | film_fulltext_trigger | film               |
| public         | film_fulltext_trigger | film               |
| public         | last_updated          | film               |
| public         | last_updated          | film_actor         |
| public         | last_updated          | film_category      |
| public         | last_updated          | inventory          |
| public         | last_updated          | language           |
| public         | last_updated          | rental             |
| public         | last_updated          | staff              |
| public         | last_updated          | store              |
+----------------+-----------------------+--------------------+

Sie können bei Bedarf weitere Spalten hinzufügen. Beispielsweise können Sie das action_statement einfügen Spalte, um die Definition des Triggers aufzunehmen.

Der pg_trigger Katalog

Der pg_catalog.pg_trigger Katalog speichert Trigger auf Tabellen und Ansichten.

Hier ist ein Codebeispiel, das eine Liste von Triggern und deren Tabelle zurückgibt:

SELECT 
    tgname AS trigger_name,
    tgrelid::regclass AS table_name
FROM 
    pg_trigger
ORDER BY 
    table_name,
    trigger_name;

Das kann je nach Datenbank ziemlich viele Trigger zurückgeben.

Wir können es wie folgt auf diese Trigger für eine bestimmte Tabelle eingrenzen:

SELECT 
    tgname AS trigger_name
FROM 
    pg_trigger
WHERE
    tgrelid = 'public.film'::regclass
ORDER BY
    trigger_name;

Beispielergebnis:

+------------------------------+
|         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                 |
+------------------------------+