在执行 MERGE 时,目标表中的同一行不可被更新或被删除一次以上。在执行了 MERGE 语句之
前,请勿尝试更新或删除尚未存在的目标中的任何行。即,没有同一 MERGE 语句插入到目标内
的行的更新或删除。
下列 MERGE 语句的示例使用事务表 new_sale 作为源表,从其来在事实表中插入或更新行。在此
样例中的结合条件测试 new_sale.cust_id 列值与 sale.cust_id 列值是否相匹配。
MERGE INTO sale USING new_sale AS n
ON sale.cust_id = n.cust_id
WHEN MATCHED THEN UPDATE
SET sale.salecount = sale.salecount + n.salecount
WHEN NOT MATCHED THEN INSERT (cust_id, salecount)
VALUES (n.cust_id, n.salecount);
要执行此 MERGE 语句,数据库服务器结合目标表和源表,并应用指定的相等条件来处理结合的结
果:对于满足条件的行(因为 sale.cust_id 值与 new_sale.cust_id 值相匹配),MERGE 根据
SET 子句的指定,更新 sale.salecount 列值。
• 对于不满足条件的行(因为在 sale 表中没有行有与 new_sale.cust_id 相同的 cust_id
值),MERGE 根据 VALUES 子句的指定,将包含 new_sale.cust_id 和
new_sale.salecount 值的新行插入 sale 表内。