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

前端之家收集整理的这篇文章主要介绍了在Oracle SQL中执行MERGE时,如何更新在SOURCE中不匹配的行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个主数据库和一个报表数据库,我需要将一个表从main同步到报表中.

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

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

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

  1. MERGE INTO report.TEST target
  2. USING (SELECT * FROM main.TEST) source
  3. ON (target.ID = source.ID)
  4. WHEN MATCHED THEN
  5. UPDATE SET (target... = source...)
  6. WHEN NOT MATCHED THEN
  7. INSERT (...) VALUES (source...)
  8. ;@H_403_8@
  9. WHEN NOT MATCHED语句给出了main中的所有新值,但是我也想从report更新所有的OLD值.

  10. 我正在使用Oracle PL / sql.

您可以使用单独的UPDATE语句来实现
  1. UPDATE report.TEST target
  2. SET is Deleted = 'Y'
  3. WHERE NOT EXISTS (SELECT 1
  4. FROM main.TEST source
  5. WHERE source.ID = target.ID);@H_403_8@
  6. 我不知道有什么办法将它整合到你的MERGE语句中.

猜你在找的Oracle相关文章