pg_trigger
Le catalogue pg_trigger
stocke les informations
concernant les déclencheurs des tables et des vues. Voir la commande
CREATE TRIGGER
pour plus d'informations.
Tableau 52.56. Colonnes de pg_trigger
Nom | Type | Références | Description |
---|---|---|---|
oid | oid | Identifiant de ligne (attribut caché ; doit être sélectionné explicitement) | |
tgrelid | 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 |
| 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 |
| La table référencée par une contrainte d'intégrité référentielle |
tgconstrindid | oid |
| L'index supportant une contrainte unique, clé primaire, clé d'intégrité référentielle, contraint d'exclusion |
tgconstraint | 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 |
| 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 | 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
.
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 relation
possède au moins un trigger dans ce catalogue.