我有一个主数据库和一个报表数据库,我需要将一个表从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语句中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。