## 52.56. `pg_trigger`

[]()

 The catalog `pg_trigger` stores triggers on tables and views. See [CREATE TRIGGER](sql-createtrigger.html) for more information.

**Table 52.56. `pg_trigger` Columns**

|                                                                                                                                       Column Type<br/><br/> Description                                                                                                                                      |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|                                                                                                                                     `oid` `oid`<br/><br/> Row identifier                                                                                                                                     |
|                                                                                                `tgrelid` `oid` (references [`pg_class`](catalog-pg-class.html).`oid`)<br/><br/> The table this trigger is on                                                                                                 |
|                                  `tgparentid` `oid` (references [`pg_trigger`](catalog-pg-trigger.html).`oid`)<br/><br/> Parent trigger that this trigger is cloned from (this happens when partitions are created or attached to a partitioned table); zero if not a clone                                  |
|                                                                                                             `tgname` `name`<br/><br/> Trigger name (must be unique among triggers of same table)                                                                                                             |
|                                                                                                   `tgfoid` `oid` (references [`pg_proc`](catalog-pg-proc.html).`oid`)<br/><br/> The function to be called                                                                                                    |
|                                                                                                                   `tgtype` `int2`<br/><br/> Bit mask identifying trigger firing conditions                                                                                                                   |
|`tgenabled` `char`<br/><br/> Controls in which [session\_replication\_role](runtime-config-client.html#GUC-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.|
|                                                                                  `tgisinternal` `bool`<br/><br/> True if trigger is internally generated (usually, to enforce the constraint identified by `tgconstraint`)                                                                                   |
|                                              `tgconstrrelid` `oid` (references [`pg_class`](catalog-pg-class.html).`oid`)<br/><br/> The table referenced by a referential integrity constraint (zero if trigger is not for a referential integrity constraint)                                               |
|                               `tgconstrindid` `oid` (references [`pg_class`](catalog-pg-class.html).`oid`)<br/><br/> The index supporting a unique, primary key, referential integrity, or exclusion constraint (zero if trigger is not for one of these types of constraint)                                |
|                                        `tgconstraint` `oid` (references [`pg_constraint`](catalog-pg-constraint.html).`oid`)<br/><br/> The [`pg_constraint`](catalog-pg-constraint.html) entry associated with the trigger (zero if trigger is not for a constraint)                                         |
|                                                                                                                   `tgdeferrable` `bool`<br/><br/> True if constraint trigger is deferrable                                                                                                                   |
|                                                                                                              `tginitdeferred` `bool`<br/><br/> True if constraint trigger is initially deferred                                                                                                              |
|                                                                                                               `tgnargs` `int2`<br/><br/> Number of argument strings passed to trigger function                                                                                                               |
|                                                                  `tgattr` `int2vector` (references [`pg_attribute`](catalog-pg-attribute.html).`attnum`)<br/><br/> Column numbers, if trigger is column-specific; otherwise an empty array                                                                   |
|                                                                                                             `tgargs` `bytea`<br/><br/> Argument strings to pass to trigger, each NULL-terminated                                                                                                             |
|                                                                                  `tgqual` `pg_node_tree`<br/><br/> Expression tree (in `nodeToString()` representation) for the trigger's `WHEN` condition, or null if none                                                                                  |
|                                                                                                           `tgoldtable` `name`<br/><br/>`REFERENCING` clause name for `OLD TABLE`, or null if none                                                                                                            |
|                                                                                                           `tgnewtable` `name`<br/><br/>`REFERENCING` clause name for `NEW TABLE`, or null if none                                                                                                            |

 Currently, column-specific triggering is supported only for `UPDATE` events, and so `tgattr` is relevant only for that event type. `tgtype` might contain bits for other event types as well, but those are presumed to be table-wide regardless of what is in `tgattr`.

### Note

 When `tgconstraint` is nonzero, `tgconstrrelid`, `tgconstrindid`, `tgdeferrable`, and `tginitdeferred` are largely redundant with the referenced [`pg_constraint`](catalog-pg-constraint.html) entry. However, it is possible for a non-deferrable trigger to be associated with a deferrable constraint: foreign key constraints can have some deferrable and some non-deferrable triggers.

### Note

`pg_class.relhastriggers` must be true if a relation has any triggers in this catalog.

