pg_trigger

目录pg_trigger存储表和视图上的触发器。

列名称

列类型

描述

oid

oid

行标识符。

tgrelid

oid

触发器所在的表。

tgparentid

oid

此被克隆的触发器的父触发器,如果不是克隆则为0;这种情况会在创建分区或附加到分区表时发生。

tgname

name

触发器名(在同一个表的触发器中必须唯一)。

tgfoid

oid

触发器调用的函数。

tgtype

int2

标识触发器触发条件的位掩码。

tgenabled

char

控制触发器在session_replication_role模式中的触发。 取值范围如下:

  • O :触发器在“origin”和“local”模式触发。

  • D :触发器被禁用。

  • R :触发器在“replica”模式触发。

  • A : 触发器总是触发。

tgisinternal

bool

为真表示触发器是内部生成的(通常是为了强制由tgconstraint指定的约束)。

tgconstrrelid

oid

被一个引用完整性约束引用的表。

tgconstrindid

oid

支持一个唯一、主键、引用完整性约束或者排除约束的索引。

tgconstraint

oid

可能存在的与触发器相关的pg_constraint项。

tgdeferrable

bool

如果约束触发器可推迟则为真。

tginitdeferred

bool

如果约束触发器初始可推迟则为真。

tgnargs

int2

传递给触发器函数的参数字符串个数。

tgattr

int2vector

如果触发器是列限定的,这里存放列号;否则这是一个空数组。

tgargs

bytea

传递给触发器的参数字符串,每一个都以NULL结尾。

tgqual

pg_node_tree

触发器WHEN条件的表达式树(以nodeToString()的表现形式),如果没有则为空。

tgoldtable

name

OLD TABLEREFERENCING子句名称,如果没有则为空。

tgnewtable

name

NEW TABLEREFERENCING子句名称,如果没有则为空。

当前,列限定触发器只被UPDATE事件支持,因此tgattr只用于这种事件类型。tgtype页可以包含用于其他事件类型的位,但其他事件类型是表范围的触发器且会忽略tgattr

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

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