PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

2 façons de lister tous les déclencheurs dans une base de données PostgreSQL

Voici deux options pour répertorier les déclencheurs dans une base de données PostgreSQL.

Les information_schema.triggers Afficher

Cette vue contient toutes les fonctions et procédures de la base de données actuelle que l'utilisateur actuel possède ou a un privilège autre que SELECT sur.

Voici un exemple de renvoi d'une liste de déclencheurs :

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

Exemple de résultat :

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

N'hésitez pas à inclure plus de colonnes si nécessaire. Par exemple, vous pouvez inclure le action_statement colonne pour inclure la définition du déclencheur.

Le pg_trigger Catalogue

Le pg_catalog.pg_trigger le catalogue stocke les déclencheurs sur les tables et les vues.

Voici un exemple de code qui renvoie une liste de déclencheurs et leur table :

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

Cela peut renvoyer un grand nombre de déclencheurs, selon la base de données.

Nous pouvons le réduire aux seuls déclencheurs pour une table donnée comme ceci :

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

Exemple de résultat :

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