Documentation PostgreSQL 15.15 » Internes » Catalogues système » `pg_trigger`

Précédent | Niveau supérieur | Suivant
53.57. `pg_transform` | Sommaire | 53.59. `pg_ts_config`

## 53.58. `pg_trigger`

Le catalogue `pg_trigger` stocke les informations concernant les triggers des tables et des vues. Voir la commande CREATE TRIGGER pour plus d'informations.

Tableau 53.58. Colonnes de `pg_trigger`

Type Description
`oid` `oid` Identifiant de ligne
`tgrelid` `oid` (référence `pg_class`.`oid`) Table sur laquelle porte le trigger
`tgparentid` `oid` (référence `pg_trigger`.`oid`) Trigger parent à partir duquel ce trigger est cloné (ceci survient quand les partitions sont créées ou attachées à une table partitionnée), zéro si ce n'est pas un clone.
`tgname` `name` Nom du trigger (doit être unique parmi les triggers d'une table)
`tgfoid` `oid` (référence `pg_proc`.`oid`) Fonction à appeler
`tgtype` `int2` Masque de bits identifiant les conditions de déclenchement
`tgenabled` `char` Contrôle l'exécution du trigger suivant le mode session_replication_role. `O` = le trigger se déclenche dans les modes « origin » et « local », `D` = le trigger est désactivé, `R` = le trigger s'exécute en mode « replica », `A` = le trigger s'exécute à chaque fois.
`tgisinternal` `bool` Vrai si le trigger est généré en interne (habituellement pour forcer la contrainte identifiée par `tgconstraint`)
`tgconstrrelid` `oid` (référence `pg_class`.`oid`) La table référencée par une contrainte d'intégrité référentielle (zéro si le trigger n'a pas pour but une contrainte d'intégrité référentielle)
`tgconstrindid` `oid` (référence `pg_class`.`oid`) L'index supportant une contrainte unique, clé primaire, clé d'intégrité référentielle, contrainte d'exclusion (zéro si le trigger ne concerne pas un de ces types de contrainte)
`tgconstraint` `oid` (référence `pg_constraint`.`oid`) L'entrée `pg_constraint` associé au trigger, si elle existe
`tgdeferrable` `bool` Vrai si le trigger contrainte est retardable
`tginitdeferred` `bool` Vrai si le trigger de contrainte est initialement retardé
`tgnargs` `int2` Nombre de chaînes d'arguments passées à la fonction du trigger
`tgattr` `int2vector` (référence `pg_attribute`.`attnum`) numéros de colonne, si le trigger est spécifique à la colonne ; sinon un tableau vide
`tgargs` `bytea` Chaînes d'arguments à passer au trigger, chacune terminée par un NULL
`tgqual` `pg_node_tree` Arbre d'expression (d'après la représentation de `nodeToString()` pour la condition `WHEN` du trigger, ou NULL si aucune
`tgoldtable` `name` Nom de la clause `REFERENCING` pour `OLD TABLE`, ou NULL si aucun
`tgnewtable` `name` Nom de la clause `REFERENCING` pour `NEW TABLE`, ou NULL si aucun

Actuellement, les triggers spécifiques par colonne sont supportés seulement pour les événements `UPDATE` et, du coup, `tgattr` est valable seulement pour ce type d'événements. `tgtype` pourrait contenir des informations pour d'autres types d'événement mais ils sont supposés valides pour la table complète, quel que soit le contenu de `tgattr`.

### Note

Quand `tgconstraint` est différent de zéro, `tgconstrrelid`, `tgconstrindid`, `tgdeferrable` et `tginitdeferred` sont grandement redondants avec l'entrée référencée de `pg_constraint`. Néanmoins, il est possible qu'un trigger non déferrable soit associé à une contrainte déferrable : les contraintes de clé étrangère peuvent avoir quelques triggers déferrables et quelques triggers non déferrables.

### Note

`pg_class.relhastriggers` doit valoir true si la relation possède au moins un trigger dans ce catalogue.