2014-09-23 49 views
0

我在這個例子與合併操作的工作,如:甲骨文合併及第三方表格

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

我怎樣才能使插入到對方表裏面的「當匹配」和「當不匹配」的條款?

更新:可能在這些子句中設置一些標誌?爲了在下一個步驟中使用它 - 執行插入...

+0

目前尚不清楚你在做什麼。在一個不同的模式中表示一個表,你可以在'into'子句中指定?或者你想插入與'into'目標不同的表中?這真的沒有道理,並會建議你使用錯誤的語句... – 2014-09-23 09:38:15

+0

我想執行合併和並行插入數據到另一個表合併/插入記錄標識符 – mgurov 2014-09-23 09:42:36

+0

這並不是很清楚.. 。你想'合併成table_a ...',但插入*不同的*表中?那麼這不是合併。 – 2014-09-23 09:52:12

回答

0

考慮到您希望受益於MERGE子句,實際上是UPDATE表,您對標誌的建議是一個不錯的主意IMO。假設你想合併TAB_ATAB_BTAB_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'; 

和同類UPDATE與 'U' 標誌線。完成後請不要忘記在TAB_A中重置標誌!