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

此触发器所在的表

tgparentid oid(引用 pg_triggeroid

此触发器所克隆自的父触发器(当创建分区或将分区附加到分区表时会发生这种情况);如果不是克隆,则为零

tgname name

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

tgfoid oid(引用 pg_procoid

要调用的函数

tgtype int2

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

tgenabled char

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

tgisinternal bool

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

tgconstrrelid oid(引用 pg_classoid

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

tgconstrindid oid(引用 pg_classoid

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

tgconstraint oid(引用 pg_constraintoid

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

tgdeferrable bool

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

tginitdeferred bool

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

tgnargs int2

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

tgattr int2vector(引用 pg_attributeattnum

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

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。

提交更正

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