The catalog pg_trigger stores triggers on tables. See CREATE TRIGGER for more information.
Table 44-35. pg_trigger Columns
Name | Type | References | Description |
---|---|---|---|
tgrelid | oid | pg_class.oid | The table this trigger is on |
tgname | name | Trigger name (must be unique among triggers of same table) | |
tgfoid | oid | pg_proc.oid | The function to be called |
tgtype | int2 | Bit mask identifying trigger conditions | |
tgenabled | char | Controls in which session_replication_role modes the trigger fires. O = trigger fires in "origin" and "local" modes, D = trigger is disabled, R = trigger fires in "replica" mode, A = trigger fires always. | |
tgisconstraint | bool | True if trigger is a "constraint trigger" | |
tgconstrname | name | Constraint name, if a constraint trigger | |
tgconstrrelid | oid | pg_class.oid | The table referenced by a referential integrity constraint |
tgconstraint | oid | pg_constraint.oid | The pg_constraint entry owning the trigger, if any |
tgdeferrable | bool | True if constraint trigger is deferrable | |
tginitdeferred | bool | True if constraint trigger is initially deferred | |
tgnargs | int2 | Number of argument strings passed to trigger function | |
tgattr | int2vector | Currently unused | |
tgargs | bytea | Argument strings to pass to trigger, each NULL-terminated |
Note: When tgconstraint is nonzero, tgisconstraint must be true, and tgconstrname, tgconstrrelid, tgdeferrable, tginitdeferred are redundant with the referenced pg_constraint entry. The reason we keep these fields is that we support "stand-alone" constraint triggers with no corresponding pg_constraint entry.
Note: pg_class.reltriggers needs to agree with the number of triggers found in this table for each relation.