PostgreSQL 9.3.1 中文手册 | ||||
---|---|---|---|---|
上一页 | 上一级 | 章 47. 系统表 | 下一页 |
pg_trigger存储表和视图上面的触发器。 参阅CREATE TRIGGER获取更多信息。
表 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里有什么。
注意: 当tgconstraint非零时,tgconstrrelid, tgconstrindid, tgdeferrable, 和 tginitdeferred与引用的pg_constraint 条目在很大程度上是冗余的。然而,不可延缓的触发器与可延缓的约束关联是可能的: 外键约束可以有一些可延缓和不可延缓的触发器。
注意: 如果一个关系有任何触发器在这个表里,则pg_class.relhastriggers必须为真。