Oracle MERGE (Română)

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 tabelul member_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

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *