51.56. pg_trigger

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

表 51.56. pg_trigger

Name Type References Description
oid oid 行标识符(隐藏属性;必须显式选择)
tgrelid oid pg_class.oid 此触发器所在的表
tgname name 触发器名称(在同一表的触发器之间必须唯一)
tgfoid oid pg_proc.oid 要调用的函数
tgtype int2 位掩码标识触发器触发条件
tgenabled char 控制触发触发器的session_replication_role模式。 O =在“原始”和“本地”模式下触发触发器,D =触发器被禁用,R =在“副本”模式下触发触发器,A =始终触发触发器。
tgisinternal bool 如果在内部生成触发器,则为 True(通常用于实施tgconstraint标识的约束)
tgconstrrelid oid pg_class.oid 参照完整性约束所参照的表
tgconstrindid oid pg_class.oid 支持唯一,主键,引用完整性或排除约束的索引
tgconstraint oid pg_constraint.oid 与触发器关联的pg_constraint条目(如果有)
tgdeferrable bool 如果约束触发器可延期,则为真
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中有什么,都假定它们为表范围的。

Note

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

Note

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

上一章 首页 下一章