PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

2 modi per elencare tutti i trigger in un database PostgreSQL

Ecco due opzioni per elencare i trigger in un database PostgreSQL.

Il information_schema.triggers Visualizza

Questa vista contiene tutte le funzioni e le procedure nel database corrente che l'utente corrente possiede o ha qualche privilegio diverso da SELECT su.

Ecco un esempio di restituzione di un elenco di attivatori:

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

Esempio di risultato:

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

Sentiti libero di includere più colonne come richiesto. Ad esempio, puoi includere action_statement colonna per includere la definizione del trigger.

Il pg_trigger Catalogo

Il pg_catalog.pg_trigger il catalogo memorizza i trigger su tabelle e viste.

Ecco un esempio di codice che restituisce un elenco di trigger e la relativa tabella:

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

Ciò può restituire molti trigger, a seconda del database.

Possiamo restringere il campo solo a quei trigger per una determinata tabella come questa:

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

Esempio di risultato:

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