我使用合并操作,如下例所示:
http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_9016.htm
如何在“匹配时”和“不匹配时”条款中插入第三方表格?
更新:可以在这个子句中设置一些标志吗?在下一个程序步骤中使用它 - 执行插入...
答案 0 :(得分:0)
考虑到您希望从MERGE
子句中获益,实际上UPDATE
一个表,您对标志的建议是一个非常好的主意IMO。假设您要将TAB_A
和TAB_B
合并到TAB_C
,首先需要ALTER TABLE TAB_A ADD (FLAG VARCHAR2(1));
。
然后MERGE
将包括设置标志:
MERGE INTO tab_a a
USING (tab_b) b
ON (...)
WHEN MATCHED THEN UPDATE SET a.flag = 'U'
WHEN NOT MATCHED THEN INSERT (..., FLAG) VALUES (..., 'I')
;
然后,您可以更新TAB_C
,如:
INSERT INTO tab_c
SELECT ...
FROM tab_a a
WHERE a.flag = 'I';
与{' U'行的UPDATE
相同。旗。当你完成时,不要忘记重置TAB_A
中的旗帜!