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