TRIGGERS
视图触发器包含当前数据库中针对当前用户拥有或具有除SELECT之外的某些特权的表和视图定义的所有触发器。
Vastbase中的触发器与影响信息模式中表示的SQL标准有两个不兼容之处。首先,触发器名称对于Vastbase中的每个表都是本地的,而不是独立的模式对象。因此,可以在一个模式中定义重复的触发器名称,只要它们属于不同的表。(trigger_catalog和trigger_schema实际上是与定义触发器的表有关的值。)其次,触发器可以定义为在Vastbase中触发多个事件(例如,ON INSERT OR UPDATE
),而 SQL 标准只允许一个。如果触发器被定义为触发多个事件,则它在信息模式中表示为多行,每种类型的事件一个。
由于这两个问题,视图触发器的主键实际上是(trigger_catalog, trigger_schema, event_object_table, trigger_name, event_manipulation) 而不是SQL 标准指定的(trigger_catalog, trigger_schema, trigger_name) 。尽管如此,如果用户以符合 SQL 标准的方式定义触发器(触发器名称在模式中是唯一的,并且每个触发器只有一个事件类型),这不会影响用户。
名称 | 数据类型 | 描述 |
---|---|---|
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 | 尚未实现。 |
action_condition | character_data | 触发器的WHEN条件,如果没有则为 null(如果表不属于当前启用的角色,则为 null)。 |
action_statement | character_data | 由触发器执行的语句(目前总是EXECUTE PROCEDURE function (…))。 |
action_orientation | character_data | 标识触发器是为每个已处理的行触发一次还是为每个语句(ROW或STATEMENT)触发一次。 |
action_timing | character_data | 触发器触发的时间(BEFORE、AFTER或 INSTEAD OF)。 |
action_reference_old_table | sql_identifier | 适用于Vastbase中不可用的功能。 |
action_reference_new_table | sql_identifier | 适用于Vastbase中不可用的功能。 |
action_reference_old_row | sql_identifier | 适用于Vastbase中不可用的功能。 |
action_reference_new_row | sql_identifier | 适用于Vastbase中不可用的功能。 |
created | time_stamp | 适用于Vastbase中不可用的功能。 |