Postgresql 中文操作指南

53.58. pg_trigger #

目录 pg_trigger 存储触发器,对表和视图。有关详细信息,请参见 CREATE TRIGGER

Table 53.58. pg_trigger Columns

Column Type

Description

oid oid

Row identifier

tgrelid oid (引用 pg_class . oid )此触发器所在的表

tgparentid oid (引用 pg_trigger . oid )此触发器所克隆的父触发器(当分区被创建或附加到分区表时发生);如果不是克隆,则为零

tgname name 触发器名称(必须在同一表的触发器中唯一)

tgfoid oid (引用 pg_proc . oid )要调用的函数

tgtype int2 用于标识触发器触发条件的位掩码

tgenabled char 控制触发器在其中触发 session_replication_role 模式。 O = 触发器以“源”和“本地”模式触发, D = 触发器被禁用, R = 触发器以“副本”模式触发, A = 触发器始终触发。

tgisinternal bool 如果触发器是内部生成的(通常为强制 tgconstraint 标识的约束),则为真

tgconstrrelid oid (引用 pg_class . oid )由引用完整性约束引用的表(如果触发器不是引用完整性约束,则为零)

tgconstrindid oid (引用 pg_class . oid )支持唯一性、主键、引用完整性或排除约束的索引(如果触发器不是其中一种约束,则为零)

tgconstraint oid (引用 pg_constraint . oid )与触发器关联的 pg_constraint 条目(如果触发器不是约束,则为零)

tgdeferrable bool 如果约束触发器可延迟,则为 true

tginitdeferred bool 如果最初延迟约束触发器,则为真

tgnargs int2 传递给触发器函数的参数字符串数

tgattr int2vector (引用 pg_attribute . attnum )如果触发器与特定列相关,则为列号;否则为空数组

tgargs bytea 传递给触发器的参数字符串,每个以 NULL 终止

tgqual pg_node_tree 触发器 WHEN 条件的表达式树(以 nodeToString() 表示),如果没有,则为空

tgoldtable name REFERENCING 对于 OLD TABLE 的子句名称,如果不存在,则为 null

tgnewtable name REFERENCING 对于 NEW TABLE 的子句名称,如果不存在,则为 null

目前,特定列的触发仅支持 UPDATE 事件,因此 tgattr 仅与此事件类型相关。tgtype 也可能包含其他事件类型的比特位,但是无论 tgattr 为何,这些事件类型都推测是针对整个表的。

Note

tgconstraint 非零时, tgconstrrelidtgconstrindidtgdeferrabletginitdeferred 主要与引用的 pg_constraint 条目相冗余。但是,也有可能有一个不能推迟的触发器与一个可推迟约束相关联:外键约束可以有一些可推迟的触发器和一些不能推迟的触发器。

Note

如果某个关系在此目录中具有任何触发器,则 pg_class.relhastriggers 必须为真。