↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
历史版本。 PostgreSQL 8.1 已结束支持。 请参阅 当前版本手册.

31.37. triggers #

视图triggers包含当前数据库中当前用户拥有的表上定义的所有触发器。(表的属主就是触发器的属主。)

表 31.35. triggers 列

名称数据类型 描述
trigger_catalogsql_identifier 包含该触发器的数据库名称(总是当前数据库)
trigger_schemasql_identifier 包含该触发器的模式名称
trigger_namesql_identifier 触发器的名称
event_manipulationcharacter_data 触发该触发器的事件(INSERT、UPDATE或DELETE)
event_object_catalogsql_identifier 包含触发器所在的表的数据库名称(总是当前数据库)
event_object_schemasql_identifier 包含触发器所在的表的模式名称
event_object_tablesql_identifier 触发器所在的表的名称
action_ordercardinal_number尚未实现
action_conditioncharacter_data对应 PostgreSQL 中不可用的特性
action_statementcharacter_data 触发器执行的语句(当前总是 EXECUTE PROCEDURE function(...))
action_orientationcharacter_data 标识触发器是对每个被处理的行触发一次还是为每个语句触发一次(ROW或STATEMENT)
condition_timingcharacter_data 触发器触发的时间(BEFORE或AFTER)
condition_reference_old_tablesql_identifier 对应 PostgreSQL 不支持的特性
condition_reference_new_tablesql_identifier 对应 PostgreSQL 不支持的特性

PostgreSQL中的触发器有两点与 SQL 标准不兼容,这会影响在该信息模式中的表示。第一,在PostgreSQL中触发器的名字是局限于每个表的,而不是独立于模式对象。因此可能在一个模式中会有重复的触发器名称,只要它们属于不同的表(trigger_catalog和trigger_schema才真正标识了触发器被定义在哪个表上)。第二,在PostgreSQL中触发器可以被定义为在多个事件上触发(例如ON INSERT OR UPDATE),而在 SQL 标准中只允许一个。如果一个触发器被定义为在多个事件上触发,它在信息模式中被表示为多行,每一行对应于一类事件。作为这两个问题的结果,视图triggers的主键实际上是(trigger_catalog, trigger_schema, trigger_name, event_object_table, event_manipulation),而不是(trigger_catalog, trigger_schema, trigger_name)(这是 SQL 标准指定的)。尽管如此,如果你以符合 SQL 标准(在模式中触发器名称唯一并且每个触发器只能有一种事件类型)的方式定义你的触发器,这将不会影响你。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.