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及更高版本。
如果您在文档中看到任何不正确、与您对特定功能的经验不符或需要进一步澄清的内容,请使用此表格来报告文档问题。