支持的版本: 当前 (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

51.58. pg_trigger #

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

表 51.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 = 触发器在originlocal模式下触发, D = 触发器被禁用, R = 触发器在replica模式下触发,A = 触发器始终触发。

tgisinternal bool

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

tgconstrrelid oid (引用 pg_class.oid)

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

tgconstrindid oid (引用 pg_class.oid)

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

tgconstraint oid (引用 pg_constraint.oid)

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

tgdeferrable bool

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

tginitdeferred bool

如果约束触发器最初是延迟的,则为真

tgnargs int2

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

tgattr int2vector (引用 pg_attribute.attnum)

如果触发器是特定于列的,则为列号;否则为空数组

tgargs bytea

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

tgqual pg_node_tree

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

tgoldtable name

OLD TABLEREFERENCING 子句名称,如果没有则为 null

tgnewtable name

NEW TABLEREFERENCING 子句名称,如果没有则为 null


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

注意

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

注意

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

提交更正

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