2024年9月26日: PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15 / 14 / 13 / 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

REFERENCING 子句名称用于 OLD TABLE,如果没有则为 null

tgnewtable name

REFERENCING 子句名称用于 NEW TABLE,如果没有则为 null


当前,特定于列的触发仅支持 UPDATE 事件,因此 tgattr 仅与该事件类型相关。 tgtype 也可能包含其他事件类型的位,但无论 tgattr 中的内容如何,这些都被假定为是针对整个表的。

注意

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

注意

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

提交更正

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