选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.6 已于 2021 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

35.55. triggers #

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

表 35.53. triggers

名称 数据类型 描述
trigger_catalog sql_identifier 包含该触发器的数据库名称(总是当前数据库)
trigger_schema sql_identifier 包含该触发器的模式名称
trigger_name sql_identifier 触发器的名称
event_manipulation character_data 触发该触发器的事件(INSERTUPDATEDELETE
event_object_catalog sql_identifier 包含触发器所在的表的数据库名称(总是当前数据库)
event_object_schema sql_identifier 包含触发器所在的表的模式名称
event_object_table sql_identifier 触发器所在的表的名称
action_order cardinal_number 尚未实现
action_condition character_data 触发器的WHEN条件,如果没有则为空(如果该表不被当前已启用角色拥有也是为空)
action_statement character_data 触发器执行的语句(当前总是 EXECUTE PROCEDURE function(...)
action_orientation character_data 标识触发器是对每个被处理的行触发一次还是为每个语句触发一次(ROWSTATEMENT
action_timing character_data 触发器在什么时候触发(BEFOREAFTERINSTEAD OF
action_reference_old_table sql_identifier 对应 PostgreSQL 不支持的特性
action_reference_new_table sql_identifier 对应 PostgreSQL 不支持的特性
action_reference_old_row sql_identifier 对应 PostgreSQL 不支持的特性
action_reference_new_row sql_identifier 对应 PostgreSQL 不支持的特性
created time_stamp 对应 PostgreSQL 不支持的特性

PostgreSQL中的触发器有两点与 SQL 标准不兼容,会影响它们在信息模式中的表示。第一,PostgreSQL中的触发器名称局限于各自的表,触发器并不是模式中的独立对象。因此,同一模式中可以定义名称相同的触发器,只要它们属于不同的表。(trigger_catalogtrigger_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_timingaction_reference_old_tableaction_reference_new_tableaction_reference_old_rowaction_reference_new_row 分别被命名为 condition_timingcondition_reference_old_tablecondition_reference_new_tablecondition_reference_old_rowcondition_reference_new_row。 那也是它们在 SQL:1999 标准中的命名。新的命名遵循 SQL:2003 及其后的版本。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。