triggers
#视图 triggers
包含了当前数据库中定义在表和视图上的所有触发器,当前用户拥有这些表和视图的所有权或者拥有除 SELECT
之外的其他一些权限。
表 35.55. triggers
列
列名 类型 描述 |
---|
包含触发器的数据库的名称(始终为当前数据库) |
包含触发器的模式的名称 |
触发器的名称 |
触发触发器的事件 ( |
包含定义触发器的表的数据库的名称(始终为当前数据库) |
包含定义触发器的表的模式的名称 |
定义触发器的表的名称 |
在同一张表上具有相同 |
触发器的 |
触发器执行的语句(目前始终为 |
标识触发器是为每个处理过的行触发一次,还是为每个语句触发一次 ( |
触发器触发的时间 ( |
“旧”过渡表的名称,如果没有则为 null |
“新”过渡表的名称,如果没有则为 null |
适用于 PostgreSQL 中不可用的功能 |
适用于 PostgreSQL 中不可用的功能 |
适用于 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 和更高版本。
如果您在文档中看到任何不正确、与特定功能的体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。