MERGE
L'istruzione MERGE permette di eseguire o una INSERT o una UPDATE o una DELETE di una tabella target a seconda che venga soddisfatta una join condition con una tabella source o il risultato di una select.
S i n t a s s i
MERGE INTO target_table TRG
USING source_table SRC ON (TRG.column_name1 = SRC.column_name1 AND TRG.column_name2 = SRC.column_name2...)
WHEN MATCHED THEN
UPDATE SET
TRG.column_namei = SRC.column_namei,
TRG.column_namej = SRC.column_namej,
.......
WHEN NOT MATCHED THEN
INSERT (TRG.column_namei, TRG.column_namej,...) VALUES (SRC.column_namea, SRC.column_nameb,..)
WHERE SRC.column_name...;
Al posto della tabella source può esserci una SELECT.
S i n t a s s i
MERGE INTO target_table TRG
USING source_table SRC ON (TRG.column_name1 = SRC.column_name1 AND TRG.column_name2 = SRC.column_name2...)
WHEN MATCHED THEN
UPDATE SET
TRG.column_namei = SRC.column_namei,
TRG.column_namej = SRC.column_namej,
.......
WHEN NOT MATCHED THEN
INSERT (TRG.column_namei, TRG.column_namej,...) VALUES (SRC.column_namea, SRC.column_nameb,..)
WHERE SRC.column_name...;
Al posto della tabella source può esserci una SELECT.