pg_trigger

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 48. 系统表 | 下一页

# 48.46. `pg_trigger`

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

表 48-46. `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`里有什么。

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

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

上一页 | 起始页 | 下一页
`pg_tablespace` | 上一级 | `pg_ts_config`