Riepilogo: in questo tutorial imparerai come utilizzare l’istruzione Oracle MERGE
per eseguire un aggiornamento o un inserimento dati basati su una condizione specificata.
Introduzione all’istruzione MERGE Oracle
L’istruzione MERGE
seleziona i dati da una o più tabelle di origine e lo aggiorna o lo inserisce in una tabella di destinazione. L’istruzione MERGE
consente di specificare una condizione per determinare se aggiornare i dati o inserire dati nella tabella di destinazione.
Quanto segue illustra la sintassi di Oracle Istruzione MERGE
:
Esaminiamo in dettaglio la dichiarazione MERGE
:
Innanzitutto, specifica la tabella di destinazione (target_table
) che desideri aggiornare o inserire nella clausola INTO
.
Secondo, specificare l’origine dei dati (source_table
) da aggiornare o inserire nella clausola USING
.
Terzo, specificare la condizione di ricerca in base alla quale l’operazione di unione si aggiorna o si inserisce nella clausola ON
.
Per ogni riga nella tabella di destinazione, Oracle valuta la condizione di ricerca:
- Se il risultato è vero, Oracle aggiorna la riga con i dati corrispondenti dalla tabella di origine.
- Nel caso in cui il risultato sia falso per un y righe, quindi Oracle inserisce la riga corrispondente dalla tabella di origine nella tabella di destinazione.
L’istruzione MERGE
diventa utile quando si desidera combinare più istruzioni INSERT
, UPDATE
e DELETE
in un’unica operazione.
Poiché MERGE
è un’istruzione deterministica, non è possibile aggiornare più volte la stessa riga della tabella di destinazione nella stessa istruzione MERGE
.
Puoi aggiungere una clausola DELETE WHERE
facoltativa alla clausola MATCHED
per ripulire dopo un’operazione di unione. La clausola DELETE
elimina solo le righe nella tabella di destinazione che corrispondono sia a ON
che a DELETE WHERE
clausole.
Prerequisiti Oracle MERGE
Per eseguire l’istruzione MERGE
, è necessario disporre del INSERT
e UPDATE
privilegi degli oggetti nelle tabelle di origine. Se utilizzi la clausola DELETE
, devi anche avere il privilegio dell’oggetto DELETE
sulla tabella di destinazione.
Oracle Esempio MERGE
Supponiamo di avere due tabelle: members
e member_staging
.
Noi inserisci una nuova riga nella tabella members
ogni volta che abbiamo un nuovo membro. Quindi, i dati della tabella members
vengono uniti ai dati della tabella member_staging
.
Le seguenti istruzioni creare le tabelle members
e member_staging
:
Le seguenti INSERT
le istruzioni inseriscono dati di esempio nelle tabelle members
e member_staging
:
Quando si aggiornano i dati da members
tabella member_staging
, dovremmo eseguire le seguenti azioni:
- Aggiorniamo le righe con ID membro 1, 3 , 4 e 6 perché il rango o il cognome di questi membri in queste tabelle è diverso.
- Inseriamo le righe con ID membro da 7 a 10 perché queste righe esistono nel
members
ma non nellamember_staging
tabella.
In totale 8 righe devono essere unite.
Il seguito ing è l’istruzione MERGE
che esegue tutte queste azioni in un colpo solo.
L’istruzione merge confronta ogni riga nel members
con ogni riga nella tabella member_staging
in base ai valori nelle colonne member_id
(vedi ON
sopra).
Se i valori nelle member_id
colonne di entrambe le tabelle sono uguali, MERGE
aggiorna il nome, il cognome e il rango dalla tabella members
alla tabella member_staging
solo se i valori di first nome, cognome o colonne di classificazione di entrambe le tabelle sono diverse.
In caso contrario, inserisce la riga dalla tabella members
nella member_staging
tabella.
Oracle ha restituito 8 righe unite come previsto.
In questo tutorial, hai imparato a utilizzare Oracle MERGE
dichiarazione per aggiornare o inserire dati in base a una condizione specificata.
- Questo tutorial è stato utile?
- SìNo