MERGE
Zusammenführen von Daten aus einem Quellsatz in eine Zielrelation
DSQL, PSQL
MERGE INTO target [[AS] target_alias] USING <source> [[AS] source_alias] ON <join_condition> <merge_when> [<merge_when> ...] [RETURNING <returning_list> [INTO <variables>]] <merge_when> ::= <merge_when_matched> | <merge_when_not_matched> <merge_when_matched> ::= WHEN MATCHED [ AND <condition> ] THEN { UPDATE SET <assignment-list> | DELETE } <merge_when_not_matched> ::= WHEN NOT MATCHED [ AND <condition> ] THEN INSERT [( <column_list> )] [<override_opt>] VALUES ( <value_list> ) <source> ::= tablename | (<select_stmt>) <assignment_list ::= col_name = <m_value> [, <col_name> = <m_value> ...]] <override_opt> ::= OVERRIDING {USER | SYSTEM} VALUE <column_list> ::= colname [, colname ...] <value_list> ::= <m_value> [, <m_value> ...] <m_value> ::= <value_expression> | DEFAULT <returning_list> ::= * | <output_column> [, <output_column] <output_column> ::= target.* | NEW.* | OLD.* | <return_expression> [COLLATE collation] [[AS] alias] <return_expression> ::= <value_expression> | [target.]col_name | NEW.col_name | OLD.col_name <value_expression> ::= <literal> | <context-variable> | any other expression returning a single value of a Firebird data type or NULL <variables> ::= [:]varname [, [:]varname ...]
Argument | Beschreibung |
---|---|
target |
Name der Zielbeziehung (Tabelle oder aktualisierbare Sicht) |
source |
Datenquelle.Dies kann eine Tabelle, eine Ansicht, eine gespeicherte Prozedur oder eine abgeleitete Tabelle sein |
target_alias |
Alias für die Zielbeziehung (Tabelle oder aktualisierbare Ansicht) |
source_alias |
Alias für die Quellrelation oder Menge |
join_conditions |
Die ( |
condition |
Zusätzliche Testbedingung in der Klausel |
tablename |
Tabellen- oder Ansichtsname |
select_stmt |
Select-Anweisung der abgeleiteten Tabelle |
col_name |
Name einer Spalte in der Zielrelation |
value_expression |
Der einer Spalte in der Zieltabelle zugewiesene Wert.Dieser Ausdruck kann ein Literalwert, eine PSQL-Variable, eine Spalte aus der Quelle oder eine kompatible Kontextvariable sein |
return_expression |
Der in der |
ret_alias |
Alias für den Wertausdruck in der |
varname |
Name einer lokalen PSQL-Variablen |
Die 'MERGE'-Anweisung führt Datensätze aus der Quelle in eine Zieltabelle oder eine aktualisierbare Sicht zusammen.Die Quelle kann eine Tabelle, ein View oder “alles, was mit SELECT
abfragen” können.Jeder Quelldatensatz wird verwendet, um einen oder mehrere Zieldatensätze zu aktualisieren, einen neuen Datensatz in die Zieltabelle einzufügen, einen Datensatz aus der Zieltabelle zu löschen oder nichts zu tun.
Welche Aktion ausgeführt wird, hängt von der angegebenen Join-Bedingung, der/den WHEN
-Klausel(n) und der - optionalen - Bedingung in der WHEN
-Klausel ab.Die Join-Bedingung und die Bedingung im WHEN
enthalten normalerweise einen Vergleich von Feldern in den Quell- und Zielbeziehungen.
Mehrere WHEN MATCHED
- und WHEN NOT MATCHED
-Klauseln sind zulässig.Für jede Zeile in der Quelle werden die WHEN
-Klauseln in der Reihenfolge überprüft, in der sie in der Anweisung angegeben sind.Wenn die Bedingung in der WHEN
-Klausel nicht als wahr ausgewertet wird, wird die Klausel übersprungen und die nächste Klausel wird geprüft.Dies wird getan, bis die Bedingung für eine WHEN
-Klausel wahr ist oder eine WHEN
-Klausel ohne Bedingung zutrifft oder es keine WHEN
-Klauseln mehr gibt.Wenn eine übereinstimmende Klausel gefunden wird, wird die mit der Klausel verknüpfte Aktion ausgeführt.Für jede Zeile in der Quelle wird höchstens eine Aktion ausgeführt.Wenn die Klausel WHEN MATCHED
vorhanden ist und mehrere Datensätze mit einem einzigen Datensatz in der Zieltabelle übereinstimmen, wird ein Fehler ausgegeben.
Warning
|
Mindestens eine
Derzeit gibt die Variable |