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 imember_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