Samenvatting: in deze tutorial leert u hoe u de Oracle MERGE
-instructie gebruikt om een update of insertie uit te voeren gegevens gebaseerd op een gespecificeerde conditie.
Inleiding tot de Oracle MERGE-instructie
De Oracle MERGE
-instructie selecteert gegevens uit een of meer brontabellen en werkt het bij of voegt het in een doeltabel in. Met de MERGE
-instructie kunt u een voorwaarde specificeren om te bepalen of gegevens moeten worden bijgewerkt uit of gegevens moeten worden ingevoegd in de doeltabel.
Het volgende illustreert de syntaxis van de Oracle MERGE
statement:
Laten we het MERGE
statement in detail bekijken:
Geef eerst de doeltabel (target_table
) die u wilt bijwerken of invoegen in de INTO
-clausule.
Ten tweede, specificeer de bron van de gegevens (source_table
) die moet worden bijgewerkt of ingevoegd in de USING
-clausule.
Ten derde, specificeer de zoekvoorwaarde waarop de samenvoegbewerking wordt bijgewerkt of ingevoegd in de ON
-clausule.
Voor elke rij in de doeltabel evalueert Oracle de zoekvoorwaarde:
- Als het resultaat waar is, werkt Oracle de rij bij met de overeenkomstige gegevens uit de brontabel.
- Als het resultaat onwaar is voor een y rijen, dan voegt Oracle de corresponderende rij van de brontabel in de doeltabel in.
De MERGE
-instructie wordt handig wanneer u wilt combineren meerdere INSERT
, UPDATE
en DELETE
instructies in één bewerking.
Omdat de MERGE
een deterministische instructie is, kunt u dezelfde rij van de doeltabel niet meerdere keren bijwerken in dezelfde MERGE
-instructie .
Je kunt een optionele DELETE WHERE
clausule toevoegen aan de MATCHED
clausule om op te schonen na een samenvoegbewerking. De clausule DELETE
verwijdert alleen de rijen in de doeltabel die overeenkomen met ON
en DELETE WHERE
clausules.
Oracle MERGE-vereisten
Om de MERGE
-instructie uit te voeren, moet u de INSERT
en UPDATE
objectrechten op de brontabellen. Als u de DELETE
-clausule gebruikt, moet u ook het objectprivilege DELETE
hebben voor de doeltabel.
Oracle MERGE-voorbeeld
Stel dat we twee tabellen hebben: members
en member_staging
.
We voeg een nieuwe rij toe aan de members
tabel wanneer we een nieuw lid hebben. Vervolgens worden de gegevens van de tabel members
samengevoegd met de gegevens van de tabel member_staging
.
De volgende instructies maak de members
en member_staging
tabellen:
De volgende INSERT
instructies voegen voorbeeldgegevens in de members
en member_staging
tabellen in:
Bij het bijwerken van gegevens van de members
tabel naar member_staging
tabel, moeten we de volgende acties uitvoeren:
- We updaten de rijen met lid-ID 1, 3 , 4 en 6 omdat de rang of de achternaam van deze leden in deze tabellen anders zijn.
- We voegen de rijen met lid-ID 7 tot 10 in omdat deze rijen bestaan in de
members
tabel maar niet in demember_staging
tabel.
In totaal moeten 8 rijen worden samengevoegd.
De volgende ing is de MERGE
-instructie die al deze acties in één keer uitvoert.
De merge-instructie vergelijkt elke rij in de members
met elke rij in de member_staging
-tabel op basis van de waarden in de member_id
kolommen (zie de ON
clausule hierboven).
Als de waarden in member_id
kolommen van beide tabellen gelijk zijn, de MERGE
-instructie werkt de voornaam, achternaam en rang van de members
-tabel alleen bij naar de member_staging
-tabel als de waarden van first naam, achternaam of rangkolommen van beide tabellen zijn verschillend.
Anders wordt de rij van de tabel members
ingevoegd in de member_staging
tabel.
Oracle retourneert 8 rijen samengevoegd zoals verwacht.
In deze tutorial heeft u geleerd hoe u de Oracle MERGE
verklaring om gegevens bij te werken of in te voegen gebaseerd op een gespecificeerde conditie.
- Was deze tutorial nuttig?
- JaNee