sql >> Databasteknik >  >> RDS >> PostgreSQL

2 sätt att lista alla utlösare i en PostgreSQL-databas

Här är två alternativ för att lista ut utlösare i en PostgreSQL-databas.

information_schema.triggers Visa

Denna vy innehåller alla funktioner och procedurer i den aktuella databasen som den aktuella användaren äger eller har någon annan behörighet än SELECT på.

Här är ett exempel på att returnera en lista med utlösare:

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

Exempelresultat:

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

Inkludera gärna fler kolumner vid behov. Du kan till exempel inkludera action_statement kolumn för att inkludera utlösarens definition.

pg_trigger Katalog

pg_catalog.pg_trigger katalogen lagrar triggers i tabeller och vyer.

Här är ett exempel på kod som returnerar en lista med utlösare och deras tabell:

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

Det kan returnera ganska många triggers, beroende på databasen.

Vi kan begränsa det till endast de utlösare för en given tabell så här:

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

Exempelresultat:

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

  1. Hanterar datum och tid istället för datetime

  2. SQL Server-låsets anatomi och de bästa sätten att undvika dem

  3. 7 sätt att returnera dubbletter av rader som har en primärnyckel i MariaDB

  4. Hur räknar man alla rader när man använder SELECT med LIMIT i MySQL-frågan?