Oracle合并和第三方表

时间:2014-09-23 09:30:56

标签: sql oracle merge

我使用合并操作,如下例所示:

http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_9016.htm

如何在“匹配时”和“不匹配时”条款中插入第三方表格?

更新:可以在这个子句中设置一些标志吗?在下一个程序步骤中使用它 - 执行插入...

1 个答案:

答案 0 :(得分:0)

考虑到您希望从MERGE子句中获益,实际上UPDATE一个表,您对标志的建议是一个非常好的主意IMO。假设您要将TAB_ATAB_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中的旗帜!