Sammanfattning: i denna handledning lär du dig hur du använder Oracle MERGE
för att utföra en uppdatering eller infoga data baserat på ett angivet villkor.
Introduktion till Oracle MERGE-satsen
Oracle MERGE
-uttrycket väljer data från en eller flera källtabeller och uppdaterar eller infogar den i en måltabell. Uttrycket MERGE
låter dig ange ett villkor för att avgöra om data ska uppdateras från eller infoga data i måltabellen.
Följande illustrerar syntaxen för Oracle MERGE
uttalande:
Låt oss undersöka MERGE
uttalande i detalj:
Ange först måltabellen (target_table
) som du vill uppdatera eller infoga i INTO
-satsen.
Andra, ange källan till data (source_table
) som ska uppdateras eller infogas i USING
-satsen.
För det tredje, ange sökvillkoret där sammanfogningen antingen uppdateras eller infogas i ON
-satsen.
För varje rad i måltabellen utvärderar Oracle sökvillkoret:
- Om resultatet är sant uppdaterar Oracle raden med motsvarande data från källtabellen.
- Om resultatet är falskt för en y-rader, sedan sätter Oracle motsvarande rad från källtabellen i måltabellen.
Uttrycket MERGE
blir bekvämt när du vill kombinera flera INSERT
, UPDATE
och DELETE
i en enda operation.
Eftersom MERGE
är ett deterministiskt uttalande kan du inte uppdatera samma rad i måltabellen flera gånger i samma MERGE
-uttalande .
Du kan lägga till en valfri DELETE WHERE
-klausul i MATCHED
-klausulen för att rensa efter en sammanslagning. DELETE
-klausulen tar bara bort raderna i måltabellen som matchar både ON
och DELETE WHERE
klausuler.
Oracle MERGE förutsättningar
För att utföra MERGE
uttalande måste du ha INSERT
och UPDATE
objektbehörigheter i källtabellerna. Om du använder DELETE
-satsen måste du också ha DELETE
objektbehörighet på måltabellen.
Oracle Sammanfoga exempel
Antag att vi har två tabeller: members
och member_staging
.
Vi infoga en ny rad i tabellen members
när vi har en ny medlem. Därefter slås data från members
tabellen samman med data i tabellen member_staging
.
Följande uttalanden skapa members
och member_staging
tabeller:
Följande INSERT
uttalanden infoga exempeldata i tabellerna members
och member_staging
:
När du uppdaterar data från members
tabell till member_staging
tabell, vi ska utföra följande åtgärder:
- Vi uppdaterar raderna med medlems-id 1, 3 , 4 och 6 eftersom rankningen eller efternamnet på dessa medlemmar i dessa tabeller är olika.
- Vi infogar raderna med medlems-id 7 till 10 beror på att dessa rader finns i
members
-tabell men inte imember_staging
-tabellen.
Totalt ska åtta rader slås samman.
Följande ing är MERGE
uttalande som utför alla dessa åtgärder i ett skott.
Sammanfogningsuttalandet jämför varje rad i members
tabell med varje rad i member_staging
tabellen baserat på värdena i kolumnerna member_id
(se ON
paragraf ovan).
Om värdena i member_id
kolumnerna i båda tabellerna är lika är MERGE
uttalande uppdaterar förnamn, efternamn och rankning från members
tabellen till member_staging
tabellen endast om värdena för första namn, efternamn eller rangkolumner i båda tabellerna är olika.
Annars infogas raden från members
-tabellen i member_staging
-tabell.
Oracle returnerade åtta rader sammanfogade som förväntat.
I denna handledning har du lärt dig hur du använder Oracle MERGE
uttalande för att uppdatera eller infoga data baserat på ett angivet villkor.
- Hjälpte den här självstudien?
- Ja Nej