Oracle MERGE (Norsk)

Sammendrag: i denne opplæringen lærer du hvordan du bruker Oracle MERGE -uttalelsen til å utføre en oppdatering eller sette inn data basert på en spesifisert tilstand.

Introduksjon til Oracle MERGE-setningen

Oracle MERGE -uttalelsen velger data fra en eller flere kildetabeller og oppdaterer eller setter den inn i en måltabell. Uttalelsen MERGE lar deg spesifisere en betingelse for å bestemme om du vil oppdatere data fra eller sette inn data i måltabellen.

Følgende illustrerer syntaksen til Oracle MERGE utsagn:

La oss undersøke MERGE utsagnet i detalj:

Først spesifiser måltabellen (target_table) som du vil oppdatere eller sette inn i INTO -setningen.

For det andre spesifiser datakilden (source_table) som skal oppdateres eller settes inn i USING klausulen.

For det tredje spesifiser søketilstanden der sammenslåingen enten oppdateres eller settes inn i ON -klausulen.

For hver rad i måltabellen vurderer Oracle søketilstanden:

  • Hvis resultatet er sant, oppdaterer Oracle raden med tilsvarende data fra kildetabellen.
  • Hvis resultatet er falskt for en y-rader, deretter setter Oracle den tilsvarende raden fra kildetabellen inn i måltabellen.

Uttrykket MERGE blir praktisk når du vil kombinere flere INSERT, UPDATE og DELETE utsagn i en enkelt operasjon.

Fordi MERGE er en deterministisk påstand, kan du ikke oppdatere den samme raden i måltabellen flere ganger i samme MERGE .

Du kan legge til en valgfri DELETE WHERE -klausul i MATCHED -klausulen for å rydde opp etter en sammenslåing. DELETE -klausulen sletter bare radene i måltabellen som samsvarer med både ON og DELETE WHERE klausuler.

Oracle MERGE forutsetninger

For å utføre MERGE utsagnet, må du ha INSERT og UPDATE objektrettigheter i kildetabellene. Hvis du bruker DELETE -klausulen, må du også ha DELETE objektrettighet på måltabellen.

Oracle MERGE-eksempel

Anta at vi har to tabeller: members og member_staging.

Vi sett inn en ny rad i members -tabellen når vi har et nytt medlem. Deretter blir dataene fra members tabellen slått sammen med dataene fra member_staging tabellen.

Følgende utsagn lag members og member_staging tabellene:

Følgende INSERT setninger setter inn eksempeldata i members og member_staging tabellene:

Når du oppdaterer data fra members tabell til member_staging tabell, vi bør utføre følgende handlinger:

  • Vi oppdaterer radene med medlems-ID 1, 3 , 4 og 6 fordi rangen eller etternavnet til disse medlemmene i disse tabellene er forskjellige.
  • Vi setter inn radene med medlems-id 7 til 10 er fordi disse radene finnes i members -tabell, men ikke i member_staging -tabellen.

Totalt skal 8 rader slås sammen.

Følgen ing er MERGE utsagnet som utfører alle disse handlingene i ett skudd.

Sammenslåingsuttalelsen sammenligner hver rad i members tabell med hver rad i member_staging tabellen basert på verdiene i member_id kolonnene (se ON ledd ovenfor).

Hvis verdiene i member_id kolonnene i begge tabellene er like, er MERGE uttalelse oppdaterer fornavn, etternavn og rangering fra members tabellen til member_staging tabellen bare hvis verdiene til første navn, etternavn eller rangkolonner i begge tabellene er forskjellige.

Ellers setter den inn raden fra members -tabellen i member_staging tabell.

Oracle returnerte 8 rader slått sammen som forventet.

I denne opplæringen har du lært hvordan du bruker Oracle MERGE uttalelse for å oppdatere eller sette inn data basert på en spesifisert tilstand.

  • Var denne opplæringen nyttig?
  • JaNei

Leave a Reply

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *