sql >> Base de Datos >  >> RDS >> PostgreSQL

2 formas de enumerar todos los disparadores en una base de datos de PostgreSQL

Aquí hay dos opciones para enumerar los activadores en una base de datos de PostgreSQL.

El information_schema.triggers Ver

Esta vista contiene todas las funciones y procedimientos en la base de datos actual que el usuario actual posee o tiene algún privilegio que no sea SELECT sobre.

Este es un ejemplo de cómo devolver una lista de disparadores:

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

Resultado de ejemplo:

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

Siéntase libre de incluir más columnas según sea necesario. Por ejemplo, puede incluir el action_statement columna para incluir la definición del activador.

El pg_trigger Catálogo

El pg_catalog.pg_trigger el catálogo almacena activadores en tablas y vistas.

Aquí hay un ejemplo de código que devuelve una lista de activadores y su tabla:

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

Eso puede generar una gran cantidad de activadores, según la base de datos.

Podemos reducirlo a solo esos disparadores para una tabla dada como esta:

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

Resultado de ejemplo:

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