47.45. pg_trigger

pg_trigger存储表和视图上面的触发器。 参阅CREATE TRIGGER获取更多信息。

Table 47-45. pg_trigger 字段

名字 类型 引用 描述
oid oid 行标识符(隐藏属性;必须明确选择)
tgrelid oid pg_class.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()表示), 如果没有则为空

当前,指定字段的触发只支持UPDATE事件,因此tgattr只和事件类型相关。 tgtype可能包含一些其他事件类型, 但是假定那些是在表范围的,不管tgattr里有什么。

Note:tgconstraint非零时,tgconstrrelid, tgconstrindid, tgdeferrable, 和 tginitdeferred与引用的pg_constraint 条目在很大程度上是冗余的。然而,不可延缓的触发器与可延缓的约束关联是可能的: 外键约束可以有一些可延缓和不可延缓的触发器。

Note: 如果一个关系有任何触发器在这个表里,则pg_class.relhastriggers必须为真。