PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

52.58. pg_trigger #

目录 pg_trigger 存储表和视图上的触发器。 更多信息请参见 CREATE TRIGGER。

Table 52.58. \1 字段列说明

Column Type

Description

oid oid

Row identifier

tgrelid oid (references pg_class.oid)

此触发器所在的表

tgparentid oid (references pg_trigger.oid)

此触发器从其克隆而来的父触发器 (当在分区表上创建或附加分区时会发生克隆); 如果不是克隆则为零

tgname name

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

tgfoid oid (references pg_proc.oid)

要调用的函数

tgtype int2

标识触发器触发条件的位掩码

tgenabled char

控制触发器在哪些 session_replication_role 模式下触发。 O = 触发器在 “origin” 和 “local” 模式下触发, D = 触发器被禁用, R = 触发器在 “replica” 模式下触发, A = 触发器总是触发。

tgisinternal bool

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

tgconstrrelid oid (references pg_class.oid)

被引用完整性约束引用的表 (如果触发器不是针对引用完整性约束的则为零)

tgconstrindid oid (references pg_class.oid)

支持唯一、主键、引用完整性或排他约束的索引 (如果触发器不是针对这些类型的约束则为零)

tgconstraint oid (references pg_constraint.oid)

与该触发器关联的 pg_constraint 条目 (如果触发器不是针对某个约束的则为零)

tgdeferrable bool

如果约束触发器可以被延迟则为真

tginitdeferred bool

如果约束触发器初始即为延迟的则为真

tgnargs int2

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

tgattr int2vector (references pg_attribute.attnum)

列号(如果触发器是针对特定列的);否则为一个空数组

tgargs bytea

传递给触发器的参数字符串,每个都以 NULL 结尾

tgqual pg_node_tree

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

tgoldtable name

REFERENCING 子句中对应 OLD TABLE 的名称,如果没有则为空

tgnewtable name

REFERENCING 子句中对应 NEW TABLE 的名称,如果没有则为空


目前,只有 UPDATE 事件支持特定列的触发, 因此 tgattr 只与该事件类型相关。 tgtype 中也可能包含其他事件类型的位, 但无论 tgattr 中是什么, 那些事件都被假定为表级的。

Note

当 tgconstraint 非零时, tgconstrrelid、tgconstrindid、 tgdeferrable 和 tginitdeferred 在很大程度上与被引用的 pg_constraint 条目冗余。不过,非可延迟的触发器也可能与可延迟的约束关联: 外键约束可以有一些可延迟的触发器和一些非可延迟的触发器。

Note

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