本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
取代現有資料列來執行合併操作
當您執行程序中詳述的合併操作時,請將建立和卸除臨時資料表以外的所有步驟置於單一交易中。如果有任何步驟失敗,您可以復原交易。使用單一交易也會減少認可的數目,如此可節省時間和資源。
取代現有資料列來執行合併操作
-
建立臨時資料表,然後將它填入要合併的資料,如下列虛擬程式碼所示。
CREATE temp table stage (like target); INSERT INTO stage SELECT * FROM source WHERE source.filter = 'filter_expression';
-
使用 與預備階段資料表MERGE執行內部聯結,以更新目標資料表中與預備階段資料表相符的列,然後將所有剩餘列插入與預備階段資料表不相符的目標資料表。
建議您在單一MERGE命令中執行更新和插入操作。
MERGE INTO target USING stage [optional alias] on (target.primary_key = stage.primary_key) WHEN MATCHED THEN UPDATE SET col_name1 = stage.col_name1 , col_name2= stage.col_name2, col_name3 = {expr} WHEN NOT MATCHED THEN INSERT (col_name1 , col_name2, col_name3) VALUES (stage.col_name1, stage.col_name2, {expr});
-
捨棄臨時資料表。
DROP TABLE stage;