在Oracle SQL中执行MERGE时,如何更新在SOURCE中不匹配的行?

我有一个数据库一个报表数据库,我需要将一个表从main同步到报表中.

但是,当一个项目在主数据库中被删除时,我只想在报表数据库中设置一个IsDeleted标志.

什么是优雅的方式来做到这一点?

我正在使用MERGE语句,如下所示:

MERGE INTO report.TEST target
USING (SELECT * FROM main.TEST) source
   ON (target.ID = source.ID)
WHEN MATCHED THEN
    UPDATE SET (target... = source...)
WHEN NOT MATCHED THEN
    INSERT (...) VALUES (source...)
;

WHEN NOT MATCHED语句给出了main中的所有新值,但是我也想从report更新所有的OLD值.

我正在使用Oracle PL / sql.

您可以使用单独的UPDATE语句来实现
UPDATE report.TEST target
SET    is Deleted = 'Y'
WHERE  NOT EXISTS (SELECT 1
                   FROM   main.TEST source
                   WHERE  source.ID = target.ID);

我不知道有什么办法将它整合到你的MERGE语句中.

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...