Le catalogue pg_trigger stocke les informations concernant les déclencheurs des tables. Voir la commande CREATE TRIGGER(7) pour plus d'informations.
Tableau 45.38. Colonnes de pg_trigger
Nom | Type | Références | Description |
---|---|---|---|
tgrelid | oid | pg_class.oid | Table sur laquelle porte le déclencheur |
tgname | name | Nom du déclencheur (doit être unique parmi les déclencheurs d'une table) | |
tgfoid | oid | pg_proc.oid | Fonction à appeler |
tgtype | int2 | Masque de bits identifiant les conditions du déclencheur | |
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 | pg_class.oid | La table référencée par une contrainte d'intégrité référentielle |
tgconstrindid | oid | pg_class.oid | L'index supportant une contrainte unique, clé primaire ou d'intégrité référentielle |
tgconstraint | oid | pg_constraint.oid | L'entrée pg_constraint associé au trigger, si elle existe |
tgdeferrable | bool | Vrai si le déclencheur contrainte est retardable | |
tginitdeferred | bool | Vrai si le déclencheur de contrainte est initialement retardé | |
tgnargs | int2 | Nombre de chaînes d'arguments passées à la fonction du déclencheur | |
tgattr | int2vector | 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 déclencheur, chacune terminée par un NULL | |
tgqual | text | Arbre d'expression (d'après la représentation de nodeToString() pour la condition WHEN du trigger, ou NULL si aucune |
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.
Quand tgconstraint est différent de zéro, tgconstrrelid, tgconstrindid, tgdeferrable et tginitdeferred sont grandement redondants avec l'entrée pg_constraint référencée. 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.
pg_class.relhastriggers doit valoir true si la table possède au moins un trigger dans ce catalogue.