Resumé: i denne vejledning lærer du, hvordan du bruger Oracle MERGE
til at udføre en opdatering eller indsættelse data baseret på en bestemt tilstand.
Introduktion til Oracle MERGE-sætningen
Oracle MERGE
-sætningen vælger data fra en eller flere kildetabeller og opdaterer eller indsætter det i en måltabel. MERGE
-erklæringen giver dig mulighed for at specificere en betingelse for at bestemme, om du vil opdatere data fra eller indsætte data i måltabellen.
Følgende illustrerer syntaksen for Oracle MERGE
udsagn:
Lad os undersøge MERGE
udsagn i detaljer:
Angiv først måltabellen (target_table
), som du vil opdatere eller indsætte i i INTO
-klausulen.
Andet, angiv datakilden (source_table
), der skal opdateres eller indsættes i USING
-klausulen.
For det tredje skal du angive den søgebetingelse, hvormed fletningen enten opdateres eller indsættes i ON
-klausulen.
For hver række i måltabellen vurderer Oracle søgebetingelsen:
- Hvis resultatet er sandt, opdaterer Oracle rækken med de tilsvarende data fra kildetabellen.
- Hvis resultatet er falsk for en y-rækker, så indsætter Oracle den tilsvarende række fra kildetabellen i måltabellen.
MERGE
udsagnet bliver praktisk, når du vil kombinere flere INSERT
, UPDATE
og DELETE
udsagn i en enkelt operation.
Da MERGE
er en deterministisk sætning, kan du ikke opdatere den samme række i måltabellen flere gange i den samme MERGE
.
Du kan føje en valgfri DELETE WHERE
-klausul til MATCHED
-klausulen for at rydde op efter en fusionshandling. DELETE
-klausulen sletter kun rækkerne i måltabellen, der matcher både ON
og DELETE WHERE
klausuler.
Oracle MERGE forudsætninger
For at udføre MERGE
udsagnet skal du have INSERT
og UPDATE
objektrettigheder i kildetabellerne. Hvis du bruger DELETE
-klausulen, skal du også have objektet DELETE
på måltabellen.
Oracle FUSION-eksempel
Antag, vi har to tabeller: members
og member_staging
.
Vi indsæt en ny række i tabellen members
, når vi har et nyt medlem. Derefter flettes dataene fra members
-tabellen med dataene fra member_staging
-tabellen.
Følgende udsagn Opret members
og member_staging
tabeller:
Følgende INSERT
udsagn indsætter eksempeldata i tabellerne members
og member_staging
:
Når du opdaterer data fra members
tabel til member_staging
tabel, vi skal udføre følgende handlinger:
- Vi opdaterer rækkerne med medlems-id 1, 3 , 4 og 6, fordi rangen eller efternavnet på disse medlemmer i disse tabeller er forskellige.
- Vi indsætter rækkerne med medlems-id 7 til 10, fordi disse rækker findes i
members
-tabellen, men ikke imember_staging
-tabellen.
I alt skal 8 rækker flettes.
Følgende ing er MERGE
udsagn, der udfører alle disse handlinger i et skud.
Fletningsudtalelsen sammenligner hver række i members
tabel med hver række i member_staging
-tabellen baseret på værdierne i member_id
-kolonnerne (se ON
klausul ovenfor).
Hvis værdierne i member_id
kolonner i begge tabeller er ens, er MERGE
udsagn opdaterer fornavn, efternavn og rang fra members
-tabellen til member_staging
-tabellen, hvis værdierne for første navn, efternavn eller rangkolonner i begge tabeller er forskellige.
Ellers indsættes rækken fra members
-tabellen i member_staging
-tabel.
Oracle returnerede 8 rækker flettet som forventet.
I denne vejledning har du lært, hvordan du bruger Oracle MERGE
erklæring for at opdatere eller indsætte data baseret på en bestemt tilstand.
- Var denne tutorial nyttig?
- Ja Nej