48.46. pg_trigger

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

表 48-46. pg_trigger 字段

名字类型引用描述
oidoid 行标识符(隐藏属性;必须明确选择)
tgrelidoidpg_class.oid这个触发器所在的表
tgnamename 触发器名称(在同一表的所有触发器中必须唯一)
tgfoidoidpg_proc.oid要调用的函数
tgtypeint2 标识触发器条件的位掩码
tgenabledchar session_replication_role模块里控制触发器的触发。 O = 触发器在"origin""local"模块里触发, D = 禁用触发器, R = 触发器在"replica"模块里触发, A = 触发器总是触发。
tgisinternalbool 如果触发器是内部产生的则为真(通常,强制约束由 tgconstraint指定)
tgconstrrelidoidpg_class.oid一个参照完整性约束引用的表
tgconstrindidoidpg_class.oid索引支持唯一、主键、参照完整性或排除约束
tgconstraintoidpg_constraint.oidpg_constraint条目与触发器相关,如果有
tgdeferrablebool 如果约束触发器可推迟则为真
tginitdeferredbool 如果约束触发器是初始可推迟则为真
tgnargsint2 传递给触发器函数的参数字符串个数
tgattrint2vectorpg_attribute.attnum如果触发器是指定字段的则为字段号;否则为空数组
tgargsbytea 传递给触发器的参数字符串,每个都是用 NULL 结尾
tgqualpg_node_tree 触发器的WHEN条件的表达式树(用nodeToString()表示), 如果没有则为空

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

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

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