Rezumat: în acest tutorial, veți afla cum să utilizați instrucțiunea Oracle MERGE
pentru a efectua o actualizare sau o inserare date bazate pe o condiție specificată.
Introducere în instrucțiunea Oracle MERGE
Instrucțiunea Oracle MERGE
selectează date dintr-una sau mai multe tabele sursă și îl actualizează sau îl introduce într-un tabel țintă. Instrucțiunea MERGE
vă permite să specificați o condiție pentru a determina dacă să actualizați datele sau să le inserați în tabelul țintă.
Următoarele ilustrează sintaxa Oracle MERGE
declarație:
Să examinăm în detaliu declarația MERGE
:
Mai întâi, specificați tabelul țintă (target_table
) pe care doriți să îl actualizați sau să îl inserați în clauza INTO
.
În al doilea rând, specificați sursa datelor (source_table
) care trebuie actualizate sau inserate în clauza USING
.
În al treilea rând, specificați condiția de căutare în care operația de îmbinare fie se actualizează, fie se inserează în clauza ON
.
Pentru fiecare rând din tabelul țintă, Oracle evaluează condiția de căutare:
- Dacă rezultatul este adevărat, atunci Oracle actualizează rândul cu datele corespunzătoare din tabelul sursă.
- În cazul în care rezultatul este fals pentru un y rânduri, apoi Oracle introduce rândul corespunzător din tabelul sursă în tabelul țintă.
Instrucțiunea MERGE
devine convenabilă atunci când doriți să combinați instrucțiuni multiple INSERT
, UPDATE
și DELETE
într-o singură operație.
Deoarece MERGE
este o instrucțiune deterministă, nu puteți actualiza același rând al tabelului țintă de mai multe ori în aceeași instrucțiune MERGE
.
Puteți adăuga o clauză opțională DELETE WHERE
la clauza MATCHED
pentru a curăța după o operație de îmbinare. Clauza DELETE
șterge doar rândurile din tabelul țintă care se potrivesc atât cu ON
, cât și cu DELETE WHERE
clauze.
Condiții preliminare Oracle MERGE
Pentru a executa declarația MERGE
, trebuie să aveți INSERT
și UPDATE
privilegii de obiect pe tabelele sursă. Dacă utilizați clauza DELETE
, trebuie să aveți și privilegiul de obiect DELETE
pe tabela țintă.
Oracle Exemplu MERGE
Să presupunem că avem două tabele: members
și member_staging
.
Noi introduceți un rând nou în tabelul members
ori de câte ori avem un membru nou. Apoi, datele din tabelul members
sunt îmbinate cu datele din tabelul member_staging
.
Următoarele afirmații creați members
și member_staging
tabele:
Următoarele INSERT
instrucțiunile inserează date eșantion în tabelele members
și member_staging
:
La actualizarea datelor din members
tabel la member_staging
tabel, ar trebui să efectuăm următoarele acțiuni:
- Actualizăm rândurile cu ID-ul de membru 1, 3 , 4 și 6 deoarece rangul sau numele acestor membri din aceste tabele sunt diferite.
- Inserăm rândurile cu ID-ul de membru 7-10 deoarece aceste rânduri există în
members
tabel, dar nu în tabelulmember_staging
.
În total, 8 rânduri ar trebui să fie combinate.
Următorul este declarația MERGE
care efectuează toate aceste acțiuni într-o singură fotografie.
Instrucțiunea merge compară fiecare rând din members
tabel cu fiecare rând din tabelul member_staging
pe baza valorilor din coloanele member_id
(consultați ON
clauza de mai sus).
Dacă valorile din member_id
coloanele ambelor tabele sunt egale, MERGE
actualizează numele, prenumele și rangul din tabelul members
în tabelul member_staging
numai dacă valorile primului numele, prenumele sau coloanele de rang ale ambelor tabele sunt diferite.
În caz contrar, inserează rândul din tabelul members
în member_staging
tabel.
Oracle a returnat 8 rânduri îmbinate conform așteptărilor.
În acest tutorial, ați învățat cum să utilizați Oracle MERGE
declarație pentru actualizarea sau inserarea datelor pe baza unei condiții specificate.
- A fost de ajutor acest tutorial?
- Da Nu