Skip to content

53.58.pg_trigger#

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

表 53.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 标识的约束),则为 True

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。