↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 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

52.56. pg_trigger #

目录 pg_trigger 存储表和视图上的触发器。详见 CREATE TRIGGER。

表 52.56. 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

为真表示触发器是内部生成的(通常是为了强制执行由 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 TABLE 在 REFERENCING 子句中指定的名称;如果没有,则为 NULL

tgnewtable name

NEW TABLE 在 REFERENCING 子句中指定的名称;如果没有,则为 NULL


当前,列限定触发器只支持 UPDATE 事件,因此 tgattr 只用于这种事件类型。tgtype 也可以包含用于其他事件类型的位,但那些事件类型被视为针对全表,而不考虑 tgattr 的内容。

注意

当 tgconstraint 非零时,tgconstrrelid、tgconstrindid、tgdeferrable 和 tginitdeferred 与被引用的 pg_constraint 项有很大的冗余。但是,存在将一个不可延迟触发器关联到一个可延迟约束的可能性:外键约束可以有一些可延迟和一些不可延迟触发器。

注意

如果一个关系在本目录中拥有任何触发器,其 pg_class.relhastriggers 必须为真。

报告文档问题

阅读 上游文档. 通过 PostgreSQL 文档反馈表单.