我有一个main
数据库和一个report
数据库,我需要同步一个表main
into report
.
但是,当项目在main
数据库,我只想设置一个IsDeleted
标志在report
数据库。
执行此操作的优雅方法是什么?
我目前正在使用 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...)
;
The WHEN NOT MATCHED
声明给了我所有新的价值main
,但我还想更新所有旧值report
.
我正在使用 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 语句中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)