2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2

52.58. pg_trigger #

catalog pg_trigger 存储表和视图上的触发器。有关更多信息,请参阅 CREATE TRIGGER

表 52.58. pg_trigger

列 类型

描述

oid oid

行标识符

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 = 触发器在“origin”和“local”模式下触发,D = 触发器被禁用,R = 触发器在“replica”模式下触发,A = 触发器总是触发。

tgisinternal bool

如果触发器是内部生成的,则为 true(通常是为了强制执行由 tgconstraint 标识的约束)

tgconstrrelid oid (引用 pg_class.oid)

由参照完整性约束引用的表(如果触发器不是为了参照完整性约束,则为零)

tgconstrindid oid (引用 pg_class.oid)

支持唯一、主键、参照完整性或排除约束的索引(如果触发器不是为了这些类型的约束之一,则为零)

tgconstraint oid (引用 pg_constraint.oid)

与触发器关联的 pg_constraint 条目(如果触发器不是为了约束,则为零)

tgdeferrable bool

如果约束触发器是可延迟的,则为 true

tginitdeferred bool

如果约束触发器是初始延迟的,则为 true

tgnargs int2

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

tgattr int2vector (引用 pg_attribute.attnum)

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

tgargs bytea

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

tgqual pg_node_tree

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

tgoldtable name

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

tgnewtable name

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


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

注意

tgconstraint 非零时,tgconstrrelidtgconstrindidtgdeferrabletginitdeferred 与引用的 pg_constraint 条目在很大程度上是冗余的。但是,一个不可延迟的触发器可能与一个可延迟的约束关联:外键约束可以有部分可延迟和部分不可延迟的触发器。

注意

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

提交更正

如果您在文档中发现任何不正确、与您在使用特定功能时的体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。