PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 10.23 » Interfaces client » Schéma d'information » triggers

36.55. triggers

La vue triggers contient tous les triggers définis dans la base de données actuelles sur les tables et vues que l'utilisateur actuel possède ou sur lesquels il a d'autres droits que le SELECT.

Tableau 36.53. Colonnes de triggers

NomType de donnéesDescription
trigger_catalogsql_identifierNom de la base contenant le trigger (toujours la base de données actuelle)
trigger_schemasql_identifierNom du schéma contenant le trigger
trigger_namesql_identifierNom du trigger
event_manipulationcharacter_data Événement qui déclenche le trigger (INSERT, UPDATE ou DELETE)
event_object_catalogsql_identifier Nom de la base contenant la table où le trigger est défini (toujours la base de données actuelle)
event_object_schemasql_identifierNom du schéma qui contient la table où le trigger est défini
event_object_tablesql_identifierNom de la table où le trigger est défini
action_ordercardinal_numberPas encore implanté
action_conditioncharacter_data La condition WHEN du trigger, NULL si aucun (NULL aussi si la table n'appartient pas à un rôle actuellement activé)
action_statementcharacter_data Instruction exécutée par le déclencheur (actuellement toujours EXECUTE PROCEDURE function(...))
action_orientationcharacter_data Indique si le déclencheur est exécuté une fois par ligne traitée ou une fois par instruction (ROW ou STATEMENT)
action_timingcharacter_data Moment où le trigger se déclenche (BEFORE, AFTER ou INSTEAD OF)
action_reference_old_tablesql_identifierS'applique à une fonctionnalité non disponible dans PostgreSQL.
action_reference_new_tablesql_identifierS'applique à une fonctionnalité non disponible dans PostgreSQL.
action_reference_old_rowsql_identifierS'applique à une fonctionnalité non disponible dans PostgreSQL
action_reference_new_rowsql_identifierS'applique à une fonctionnalité non disponible dans PostgreSQL
createdtime_stampS'applique à une fonctionnalité non disponible dans PostgreSQL

Les déclencheurs dans PostgreSQL ont deux incompatibilités avec le standard SQL qui affectent leur représentation dans le schéma d'information.

Premièrement, les noms des déclencheurs sont locaux à chaque table sous PostgreSQL, et ne sont pas des objets du schéma indépendants. De ce fait, il peut exister des déclencheurs de même noms au sein d'un schéma, pour peu qu'ils s'occupent de tables différentes. (trigger_catalog et trigger_schema sont les champs qui décrivent effectivement la table sur laquelle est défini le déclencheur.)

Deuxièmement, les déclencheurs peuvent être définis pour s'exécuter sur plusieurs événements sous PostgreSQL (c'est-à-dire ON INSERT OR UPDATE) alors que le standard SQL n'en autorise qu'un. Si un déclencheur est défini pour s'exécuter sur plusieurs événements, il est représenté sur plusieurs lignes dans le schéma d'information, une pour chaque type d'événement.

En conséquence, la clé primaire de la vue triggers est en fait (trigger_catalog, trigger_schema, event_object_table, trigger_name, event_manipulation) et non (trigger_catalog, trigger_schema, trigger_name) comme le spécifie le standard SQL. Néanmoins, si les déclencheurs sont définis de manière conforme au standard SQL (des noms de déclencheurs uniques dans le schéma et un seul type d'événement par déclencheur), il n'y a pas lieu de se préoccuper de ces deux incompatibilités.

Note

Avant PostgreSQL 9.1, les colonnes action_timing, action_reference_old_table, action_reference_new_table, action_reference_old_row et action_reference_new_row de cette vue étaient nommées respectivement condition_timing, condition_reference_old_table, condition_reference_new_table, condition_reference_old_row et condition_reference_new_row. Cela reflétaient leur nommage dans le standard SQL:1999. Le nouveau nommage est conforme à SQL:2003 et les versions ultérieures.