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

37.57. 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 37.55. Colonnes de triggers

Type de la colonne

Description

trigger_catalog sql_identifier

Nom de la base contenant le trigger (toujours la base de données actuelle)

trigger_schema sql_identifier

Nom du schéma contenant le trigger

trigger_name sql_identifier

Nom du trigger

event_manipulation character_data

Événement qui déclenche le trigger (INSERT, UPDATE ou DELETE)

event_object_catalog sql_identifier

Nom de la base contenant la table où le trigger est défini (toujours la base de données actuelle)

event_object_schema sql_identifier

Nom du schéma qui contient la table où le trigger est défini

event_object_table sql_identifier

Nom de la table où le trigger est défini

action_order cardinal_number

Déclencher parmi les triggers sur la même table qui ont les mêmes event_manipulation, action_timing et action_orientation. Dans PostgreSQL, les triggers sont déclenchés dans l'ordre des noms, et cette colonne reflète cela.

action_condition character_data

La condition WHEN du trigger, NULL si aucun (NULL aussi si la table n'appartient pas à un rôle actuellement activé)

action_statement character_data

Instruction exécutée par le trigger (actuellement toujours EXECUTE FUNCTION fonction(...))

action_orientation character_data

Indique si le trigger est exécuté une fois par ligne traitée ou une fois par instruction (ROW ou STATEMENT)

action_timing character_data

Moment où le trigger se déclenche (BEFORE, AFTER ou INSTEAD OF)

action_reference_old_table sql_identifier

Nom de la table de transition « old », ou NULL sinon

action_reference_new_table sql_identifier

Nom de la table de transition « new », ou NULL sinon

action_reference_old_row sql_identifier

S'applique à une fonctionnalité non disponible dans PostgreSQL

action_reference_new_row sql_identifier

S'applique à une fonctionnalité non disponible dans PostgreSQL

created time_stamp

S'applique à une fonctionnalité non disponible dans PostgreSQL


Les triggers 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 triggers sont locaux à chaque table sous PostgreSQL, et ne sont pas des objets du schéma indépendants. De ce fait, il peut exister des triggers 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 trigger.)

Deuxièmement, les triggers 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 trigger 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 triggers sont définis de manière conforme au standard SQL (des noms de triggers uniques dans le schéma et un seul type d'événement par trigger), 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.