51.56. pg_trigger

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

表 51.56. pg_trigger

NameTypeReferencesDescription
oidoid 行标识符(隐藏属性;必须显式选择)
tgrelidoidpg_class.oid此触发器所在的表
tgnamename 触发器名称(在同一表的触发器之间必须唯一)
tgfoidoidpg_proc.oid要调用的函数
tgtypeint2 位掩码标识触发器触发条件
tgenabledchar 控制触发触发器的session_replication_role模式。 O =在“原始”和“本地”模式下触发触发器,D =触发器被禁用,R =在“副本”模式下触发触发器,A =始终触发触发器。
tgisinternalbool 如果在内部生成触发器,则为 True(通常用于实施tgconstraint标识的约束)
tgconstrrelidoidpg_class.oid参照完整性约束所参照的表
tgconstrindidoidpg_class.oid支持唯一,主键,引用完整性或排除约束的索引
tgconstraintoidpg_constraint.oid与触发器关联的pg_constraint条目(如果有)
tgdeferrablebool 如果约束触发器可延期,则为真
tginitdeferredbool 如果约束触发器最初被延迟,则为 True
tgnargsint2 传递给触发函数的参数字符串数
tgattrint2vectorpg_attribute.attnum列号(如果触发器是特定于列的);否则为空数组
tgargsbytea 要传递给触发器的参数字符串,每个字符串以 NULL 终止
tgqualpg_node_tree 触发器WHEN条件的表达式树(以nodeToString()表示);如果没有,则为 null
tgoldtablename REFERENCING的子句名称为OLD TABLE,如果没有则为 null
tgnewtablename REFERENCING的子句名称为NEW TABLE,如果没有则为 null

当前,仅针对UPDATE个事件支持特定于列的触发,因此tgattr仅与该事件类型相关。 tgtype也可能包含其他事件类型的位,但是无论tgattr中有什么,都假定它们为表范围的。

Note

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

Note

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