GBase8s数据库MERGE 语句
使用 MERGE 语句,通过在单个 SQL 语句内综合 UPDATE 或 DELETE 操作与 INSERT 操作,来将数据从源表转移到目标表内。您还可使用此语句来将源表与目标表合并,然后对目标表仅执行 UPDATE 操作,仅执行 DELETE 操作,或仅执行 INSERT 操作。用法GBase 8s 的 MERGE 语句是数据操纵语言(DML)语句,将源表对象与目标表或视图结合。您在ON 关键字
使用 MERGE 语句,通过在单个 SQL 语句内综合 UPDATE 或 DELETE 操作与 INSERT 操
作,来将数据从源表转移到目标表内。您还可使用此语句来将源表与目标表合并,然后对目标表仅
执行 UPDATE 操作,仅执行 DELETE 操作,或仅执行 INSERT 操作。
用法
GBase 8s 的 MERGE 语句是数据操纵语言(DML)语句,将源表对象与目标表或视图结合。您在
ON 关键字之后指定的 condition 决定在目标上的 UPDATE 或 DELETE 操作中使用源对象的哪
一行,以及在目标上的 INSERT 操作中使用哪一行。MERGE 语句不更改源对象条件必须后跟 Delete 或 Update 子句的 WHEN MATCHED THEN 关键字,或后跟 Insert 子句的
WHEN NOT MATCHED THEN 关键字,或后跟 Update(或 Delete)以及 Insert 子句。
如果您指定 Update 和 Insert 两个子句,则 MERGE 语句可在目标对象上执行 INSERT
和 UPDATE 两个操作。
如果您指定 Delete 和 Insert 两个子句,则 MERGE 语句可在目标对象上执行 INSERT
和 DELETE 两个操作。
如果您未指定 Insert 子句,则不执行 INSERT 操作,但 Update 子句必须在满足该条件
的源行的目标对象上指定 UPDATE 操作(抑或 Delete 子句必须指定 DELETE 操作)。
如果您未指定 Update 子句且未指定 Delete 子句,则不执行 UPDATE 或 DELETE 操
作,但 Insert 子句必须为不匹配该对象的源行指定目标对象上的 INSERT 操作。
如果未指定 Delete 子句,未指定 Update 子句,且未指定 Insert 子句,则 MERGE 语句失败并提
示错误。
MERGE 语句可对目标对象产生下列影响:
如果包括 Update 子句,则 MERGE 语句根据 SET 子句的规范,以源表中该条件取值为
真的行的数据更新目标表或视图中的行。
如果包括 Delete 子句,则 MERGE 语句从目标表或视图删除该条件取值为真的行。
如果包括 Insert 子句,则 MERGE 语句根据 VALUES 子句的规范,以源表中该条件取
值为假的行数据,向目标表或视图内插入新行。
然而,单个 MERGE 语句仅可有这三个影响中的两个,因为 Delete 子句与 Update 子句是互斥的。
对于大型表上的操作,请确保在您的系统上可获得这些资源:
足够数量的锁
用于中间的结合结果的足够的临时 dbspace 存储
用于 MERGE 语句的结果的充足的 dbspace 存储。
在高可用性集群配置中,您可从主服务器或从可更新的辅助服务器发出 MERGE 语句。
更多推荐
所有评论(0)