Podsumowanie: w tym samouczku nauczysz się, jak używać instrukcji Oracle MERGE w celu wykonania aktualizacji lub wstawienia dane na podstawie określonego warunku.
Wprowadzenie do instrukcji Oracle MERGE
Instrukcja Oracle MERGE wybiera dane z co najmniej jednej tabeli źródłowej i aktualizuje lub wstawia go do tabeli docelowej. Instrukcja MERGE umożliwia określenie warunku określającego, czy należy aktualizować dane z tabeli docelowej, czy też wstawiać je do tabeli docelowej.
Poniżej przedstawiono składnię Oracle MERGE instrukcja:
Przeanalizujmy szczegółowo instrukcję MERGE:
Najpierw określ tabela docelowa (target_table), którą chcesz zaktualizować lub wstawić do klauzuli INTO.
Po drugie, określ źródło danych (source_table) do aktualizacji lub wstawienia w klauzuli USING.
Po trzecie, określ warunek wyszukiwania, na podstawie którego operacja scalania aktualizuje lub wstawia klauzulę ON.
Dla każdego wiersza w tabeli docelowej Oracle ocenia warunek wyszukiwania:
- Jeśli wynik jest prawdziwy, Oracle aktualizuje wiersz odpowiednimi danymi z tabeli źródłowej.
- Jeśli wynik jest fałszywy dla y wierszy, a następnie Oracle wstawia odpowiedni wiersz z tabeli źródłowej do tabeli docelowej.
Instrukcja MERGE staje się wygodna, gdy chcesz połączyć wiele instrukcji INSERT, UPDATE i DELETE w jednej operacji.
Ponieważ MERGE jest instrukcją deterministyczną, nie można wielokrotnie aktualizować tego samego wiersza tabeli docelowej w tej samej instrukcji MERGE .
Możesz dodać opcjonalną klauzulę DELETE WHERE do klauzuli MATCHED, aby posprzątać po operacji scalania. Klauzula DELETE usuwa tylko wiersze w tabeli docelowej, które pasują zarówno do ON, jak i DELETE WHERE klauzul.
Wymagania wstępne Oracle MERGE
Aby wykonać instrukcję MERGE, musisz mieć INSERT i UPDATE uprawnienia do obiektów w tabelach źródłowych. Jeśli używasz klauzuli DELETE, musisz mieć także uprawnienie do obiektu DELETE w tabeli docelowej.
Oracle Przykład MERGE
Załóżmy, że mamy dwie tabele: members i member_staging.
Mamy wstaw nowy wiersz do tabeli members, ilekroć mamy nowego członka. Następnie dane z tabeli members są łączone z danymi z tabeli member_staging.
Poniższe instrukcje utwórz tabele members i member_staging:
Następujące INSERT instrukcje wstawiają przykładowe dane do tabel members i member_staging:
Podczas aktualizowania danych z members do tabeli member_staging, powinniśmy wykonać następujące czynności:
- Aktualizujemy wiersze o identyfikator elementu 1, 3 , 4 i 6, ponieważ ranga lub nazwisko tych członków w tych tabelach są różne.
- Wstawiamy wiersze o identyfikatorze elementu od 7 do 10, ponieważ te wiersze istnieją w
members, ale nie w tabelimember_staging.
W sumie powinno zostać scalonych 8 wierszy.
Poniżej ing to instrukcja MERGE, która wykonuje wszystkie te czynności za jednym razem.
Instrukcja merge porównuje każdy wiersz w members z każdym wierszem w tabeli member_staging na podstawie wartości w kolumnach member_id (patrz ON powyżej).
Jeśli wartości w kolumnach member_id obu tabel są równe, MERGE aktualizuje imię, nazwisko i pozycję z tabeli members do tabeli member_staging tylko wtedy, gdy wartości pierwszego kolumny nazwy, nazwiska lub rangi obu tabel są różne.
W przeciwnym razie wstawia wiersz z tabeli members do member_staging table.
Oracle zwróciło 8 wierszy scalonych zgodnie z oczekiwaniami.
W tym samouczku nauczyłeś się, jak używać Oracle MERGE, aby zaktualizować lub wstawić dane na podstawie określonego warunku.
- Czy ten samouczek był pomocny?
- Tak Nie