目标对象可为在其上定义 Update、Delete 或 Insert 触发器的表。如果在目标表上 Update 触发器
和 Insert 触发器(或 Delete 触发器和 Insert 触发器)都启用,则 MERGE 作为两个触发器的触
发事件,如果 MERGE 语句在目标上执行 UPDATE(或 DELETE)和 INSERT 操作的话。
如果 MERGE 语句包括激活 Update(或 Delete)和 Insert 触发器的操作,则当 MERGE 操作启
动时,两个触发器的 BEFORE 触发器活动都执行。类似地,在 MERGE 操作的结尾,两个触发器
的 AFTER 触发器活动都执行。每处理一行,都激活 FOR EACH ROW 触发器活动。
恰如对任何 DML 语句那样,数据库服务器将同一 MERGE 语句激活的所有触发器视同一个单个
触发器,且结果触发器活动是合并的活动列表。控制一个触发器活动的所有规则适用于作为一个列
表的合并的列表,且对这两个原始触发器一视同仁。要获取更多信息,请参阅 多个触发器的操
作。
然而,目标对象不可为在其上定义启用的 INSTEAD OF 触发器的视图。在您可使用那个视图作为
MERGE 语句的目标之前,您必须禁用或删除该 INSTEAD OF 触发器。
在触发器的定义中,不可直接指定 MERGE 语句作为触发器活动。然而,在触发的活动中调用的
SPL 触发器例程可发出 MERGE 语句。
安全策略和安全审计
如果源对象或其任何列被基于标签的访问控制(LBAC)安全策略所保护,则发出该 MERGE 语句
的用户必须有安全标签(或必须持有安全策略豁免),提供其足以在 MERGE 操作中读取该源表
的凭证。
如果目标对象或其任何列被基于标签的安全策略所保护,则发出 MERGE 语句的用户必须有安全
标签(或持有安全策略豁免),提供其足以在 SET 子句或 VALUES 子句指定的目标对象列中写
的凭证,或足以从包括受保护的数据的目标删除行的凭证。
如果源和目标表都受到保护,则它们必须受到同一安全策略的保护。MERGE 语句不可结合那些受
不同的 LBAC 安全策略保护的表。
在使用安全审计功能来记录活动的 GBase 8s 实例上,可能潜在地修改或显示数据或审计配置,在
对 MERGE 语句的审计跟踪中未定义特定的审计事件助记符:
Delete 子句指定的活动记录为 DELETE 事件。
Insert 子句指定的活动记录为 INSERT 事件。
Update 子句指定的活动记录为 UPDATE 事件。




