在Oracle SQL中执行MERGE时,如何更新在SOURCE中不匹配的行?
发布时间:2020-12-12 13:04:52 所属栏目:百科 来源:网络整理
导读:我有一个主数据库和一个报表数据库,我需要将一个表从main同步到报表中. 但是,当一个项目在主数据库中被删除时,我只想在报表数据库中设置一个IsDeleted标志. 什么是优雅的方式来做到这一点? 我正在使用MERGE语句,如下所示: MERGE INTO report.TEST targetUS
我有一个主数据库和一个报表数据库,我需要将一个表从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语句中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |