Oracle MERGE

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 de member_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

Leave a Reply

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *