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