Zusammenfassung: In diesem Lernprogramm erfahren Sie, wie Sie die Oracle MERGE
-Anweisung verwenden, um ein Update oder Einfügen durchzuführen Daten basieren auf einer bestimmten Bedingung.
Einführung in die Oracle MERGE-Anweisung
Die Oracle MERGE
-Anweisung wählt Daten aus einer oder mehreren Quelltabellen aus und aktualisiert oder fügt es in eine Zieltabelle ein. Mit der Anweisung MERGE
können Sie eine Bedingung angeben, um zu bestimmen, ob Daten aus der Zieltabelle aktualisiert oder in die Zieltabelle eingefügt werden sollen.
Im Folgenden wird die Syntax von Oracle veranschaulicht MERGE
-Anweisung:
Lassen Sie uns die MERGE
-Anweisung im Detail untersuchen:
Geben Sie zunächst an die Zieltabelle (target_table
), die Sie aktualisieren oder in die INTO
-Klausel einfügen möchten.
Zweitens: Geben Sie die Datenquelle (source_table
) an, die aktualisiert oder in die Klausel USING
eingefügt werden soll.
Geben Sie drittens an Die Suchbedingung, unter der die Zusammenführungsoperation entweder aktualisiert oder in die ON
-Klausel eingefügt wird.
Für jede Zeile in der Zieltabelle wertet Oracle die Suchbedingung aus:
- Wenn das Ergebnis wahr ist, aktualisiert Oracle die Zeile mit den entsprechenden Daten aus der Quelltabelle.
- Falls das Ergebnis für a falsch ist y Zeilen, dann fügt Oracle die entsprechende Zeile aus der Quelltabelle in die Zieltabelle ein.
Die Anweisung MERGE
ist praktisch, wenn Sie kombinieren möchten mehrere INSERT
, UPDATE
und DELETE
Anweisungen in einer einzigen Operation.
Da die MERGE
eine deterministische Anweisung ist, können Sie dieselbe Zeile der Zieltabelle nicht mehrmals in derselben MERGE
-Anweisung aktualisieren
Sie können der MATCHED
-Klausel eine optionale DELETE WHERE
-Klausel hinzufügen, um sie nach einem Zusammenführungsvorgang zu bereinigen. Die Klausel DELETE
löscht nur die Zeilen in der Zieltabelle, die sowohl mit ON
als auch mit DELETE WHERE
übereinstimmen Klauseln.
Oracle MERGE-Voraussetzungen
Um die Anweisung MERGE
auszuführen, müssen Sie über die Anweisung INSERT
und UPDATE
Objektberechtigungen für die Quelltabellen. Wenn Sie die Klausel DELETE
verwenden, müssen Sie auch über die Objektberechtigung DELETE
für die Zieltabelle verfügen.
Oracle MERGE-Beispiel
Angenommen, wir haben zwei Tabellen: members
und member_staging
.
Wir Fügen Sie eine neue Zeile in die Tabelle members
ein, wenn wir ein neues Mitglied haben. Anschließend werden die Daten aus der Tabelle members
mit den Daten der Tabelle member_staging
zusammengeführt.
Die folgenden Anweisungen Erstellen Sie die Tabellen members
und member_staging
:
Die folgenden INSERT
Anweisungen fügen Beispieldaten in die Tabellen members
und member_staging
ein:
Beim Aktualisieren von Daten aus der Tabelle members
Tabelle zu member_staging
Tabelle, sollten wir die folgenden Aktionen ausführen:
- Wir aktualisieren die Zeilen mit der Mitglieds-ID 1, 3 , 4 und 6, weil der Rang oder der Nachname dieser Mitglieder in diesen Tabellen unterschiedlich sind.
- Wir fügen die Zeilen mit den Mitglieds-IDs 7 bis 10 ein, weil diese Zeilen in der -Tabelle, jedoch nicht in der Tabelle
member_staging
.
Insgesamt sollten 8 Zeilen zusammengeführt werden.
Folgendes ing ist die Anweisung MERGE
, die alle diese Aktionen auf einmal ausführt.
Die Anweisung merge vergleicht jede Zeile in der members
-Tabelle mit jeder Zeile in der Tabelle member_staging
basierend auf den Werten in den Spalten member_id
(siehe ON
-Klausel oben).
Wenn die Werte in den Spalten member_id
beider Tabellen gleich sind, wird die MERGE
aktualisiert den Vor- und Nachnamen sowie den Rang von der Tabelle members
auf die Tabelle member_staging
nur, wenn die Werte von first Name, Nachname oder Rangspalten beider Tabellen sind unterschiedlich.
Andernfalls wird die Zeile aus der Tabelle members
in die Tabelle -Tabelle.
Oracle hat 8 Zeilen zurückgegeben, die wie erwartet zusammengeführt wurden.
In diesem Lernprogramm haben Sie gelernt, wie Sie Oracle MERGE
Anweisung zum Aktualisieren oder Einfügen von Daten basierend auf einer bestimmten Bedingung.
- War dieses Tutorial hilfreich?
- JaNein