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