나는 main
데이터베이스와 report
데이터베이스를 가지고 있으며 main
에서 report
으로 테이블을 동기화해야합니다.Oracle SQL에서 MERGE를 수행 할 때 SOURCE와 일치하지 않는 행을 어떻게 업데이트 할 수 있습니까?
그러나 항목이 main
데이터베이스에서 삭제되면 report
데이터베이스에 IsDeleted
플래그 만 설정하고 싶습니다.
어떻게하면 좋을까요?
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 값을 업데이트 할 :
나는 현재이처럼 MERGE 문을 사용하고 있습니다.
Oracle PL/SQL을 사용하고 있습니다.
'main.test'를 업데이트하려는 값은 무엇입니까? 어디서 구해 줄거야? –
행이'main.test'에서 삭제되면 해당 'report.test' 행이 일치하지 않습니다. 일치하지 않는 모든 행에 대해'report.test.IsDeleted' 플래그를 설정하고 싶습니다. –
기본 JOIN ('using (...)')의 결과가 해당 행을 포함하지 않기 때문에 가능하지 않다고 생각합니다. 그 데이터는 어디서 오는 것이 좋습니까? –