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

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 13 已结束支持。 2025-11-13. 请参阅 当前版本手册.

36.53. triggers #

视图 triggers 包含当前数据库中定义在表和视图上的所有触发器,前提是当前用户拥有这些表或视图,或具有其上的某种 SELECT 之外的权限。

表 36.51. triggers 列

列类型

描述

trigger_catalog sql_identifier

包含该触发器的数据库名称(总是当前数据库)

trigger_schema sql_identifier

包含该触发器的模式名称

trigger_name sql_identifier

触发器的名称

event_manipulation character_data

触发该触发器的事件(INSERT、UPDATE 或 DELETE)

event_object_catalog sql_identifier

包含触发器所在的表的数据库名称(总是当前数据库)

event_object_schema sql_identifier

包含触发器所在的表的模式名称

event_object_table sql_identifier

触发器所在的表的名称

action_order cardinal_number

同一个表上具有相同 event_manipulation、action_timing 和 action_orientation 的触发器之间的触发顺序。在 PostgreSQL 中,触发器按照名称顺序被触发,因此这一列会反映这种规则。

action_condition character_data

触发器的 WHEN 条件,没有条件时为 null(如果该表不归当前已启用角色所有,也为 null)

action_statement character_data

触发器执行的语句(当前总是 EXECUTE FUNCTION function(...))

action_orientation character_data

标识触发器是对每个被处理的行触发一次还是为每个语句触发一次(ROW 或 STATEMENT)

action_timing character_data

触发器在什么时候触发(BEFORE、AFTER 或 INSTEAD OF)

action_reference_old_table sql_identifier

“旧”过渡表的名称,如果没有则为 null

action_reference_new_table sql_identifier

“新”过渡表的名称,如果没有则为 null

action_reference_old_row sql_identifier

对应 PostgreSQL 不支持的特性

action_reference_new_row sql_identifier

对应 PostgreSQL 不支持的特性

created time_stamp

对应 PostgreSQL 不支持的特性


PostgreSQL 中的触发器有两点与 SQL 标准不兼容,会影响它们在信息模式中的表示。第一,PostgreSQL 中的触发器名称局限于各自的表,触发器并不是模式中的独立对象。因此,同一模式中可以定义名称相同的触发器,只要它们属于不同的表。(trigger_catalog 和 trigger_schema 实际上是触发器所在表对应的数据库和模式值。)第二,PostgreSQL 允许将触发器定义为在多个事件上触发(例如 ON INSERT OR UPDATE),而 SQL 标准只允许一个事件。如果一个触发器被定义为在多个事件上触发,它在信息模式中就会表示为多行,每种事件类型对应一行。由于这两点,视图 triggers 的主键实际上是(trigger_catalog, trigger_schema, event_object_table, trigger_name, event_manipulation),而不是 SQL 标准规定的(trigger_catalog, trigger_schema, trigger_name)。不过,如果以符合 SQL 标准的方式定义触发器(名称在模式中唯一,且每个触发器只有一种事件类型),就不会受到影响。

注意

在 PostgreSQL 9.1 之前,这个视图的列 action_timing、action_reference_old_table、action_reference_new_table、action_reference_old_row 和 action_reference_new_row 分别被命名为 condition_timing、condition_reference_old_table、condition_reference_new_table、condition_reference_old_row 和 condition_reference_new_row。那也是它们在 SQL:1999 标准中的命名。新的命名遵循 SQL:2003 及其后的版本。

报告文档问题

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