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必须为真。