Postgresql 中文操作指南
53.58. pg_trigger #
目录 pg_trigger 存储触发器,对表和视图。有关详细信息,请参见 CREATE TRIGGER 。
The catalog pg_trigger stores triggers on tables and views. See CREATE TRIGGER for more information.
Table 53.58. pg_trigger Columns
Table 53.58. pg_trigger Columns
Column Type Description |
oid oid Row identifier |
tgrelid oid (references pg_class.oid) The table this trigger is on |
tgparentid oid (references pg_trigger.oid) 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 Trigger name (must be unique among triggers of same table) |
tgfoid oid (references pg_proc.oid) The function to be called |
tgtype int2 Bit mask identifying trigger firing 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. |
tgisinternal bool True if trigger is internally generated (usually, to enforce the constraint identified by tgconstraint) |
tgconstrrelid oid (references pg_class.oid) The table referenced by a referential integrity constraint (zero if trigger is not for a referential integrity constraint) |
tgconstrindid oid (references pg_class.oid) 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.oid) The pg_constraint entry associated with the trigger (zero if trigger is not for a constraint) |
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 (references pg_attribute.attnum) Column numbers, if trigger is column-specific; otherwise an empty array |
tgargs bytea Argument strings to pass to trigger, each NULL-terminated |
tgqual pg_node_tree Expression tree (in nodeToString() representation) for the trigger’s WHEN condition, or null if none |
tgoldtable name REFERENCING clause name for OLD TABLE, or null if none |
tgnewtable name REFERENCING clause name for NEW TABLE, or null if none |
目前,特定列的触发仅支持 UPDATE 事件,因此 tgattr 仅与此事件类型相关。tgtype 也可能包含其他事件类型的比特位,但是无论 tgattr 为何,这些事件类型都推测是针对整个表的。
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
当 tgconstraint 非零时, tgconstrrelid 、 tgconstrindid 、 tgdeferrable 和 tginitdeferred 主要与引用的 pg_constraint 条目相冗余。但是,也有可能有一个不能推迟的触发器与一个可推迟约束相关联:外键约束可以有一些可推迟的触发器和一些不能推迟的触发器。
When tgconstraint is nonzero, tgconstrrelid, tgconstrindid, tgdeferrable, and tginitdeferred are largely redundant with the referenced pg_constraint 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.