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