Merge (SQL)

SQL Merge teikums darbojas reizē kā visi pārējie SQL teikuma veidi (Select, Insert, Update un Delete). Ta galvenā ideja ir tāda, ka tiek salīdzinātas divas ierakstu kopas - izejas dati (Select daļa) un mērķa dati, balstoties uz norādītu nosacījumu, - un atkarībā no tā, vai nosacījums izpildās, vai nē, dati tiek pievienoti (Insert), koriģēti (Update) vai dzēsti (Delete). Merge galvenokārt ir ērti izmantot gadījumos, kad tabulā glabājas esoši ieraksti un tiek periodiski saņemtas jaunas ierakstu kopas, kurās var būt esošo ierakstu jaunākas versijas vai arī pavisam jauni ieraksti.

 Sintakse 
Atkarībā no konkrētās datubāzu pārvaldības sistēmas, sintakse nedaudz mainās, bet ir iespējams izdalīt ārā kopīgo daļu.

MERGE INTO <mērķa tabula>
USING <izejas dati>
ON <salīdzināšanas nosacījums>
WHEN MATCHED THEN <ierakstu koriģēšanas teikums>
WHEN NOT MATCHED THEN <ierakstu pievienošanas teikums>

Aiz atslēgas vārdiem Merge into tiek rakstīts tabulas vārds, kurā tiks veiktas izmaiņas - ieraksti koriģēti vai pievienoti. Aiz atslēgas varda Using raksta vai nu vienkārši izejas datu tabulu, vai arī Select apakšvaicājumu, kas atgriež datus no vienas vai vairākām tabulām. Pēc On raksta salīdzināšanas nosacījumu, kas nosaka kādā veidā ieraksti tiks saistīti izejas un mērķa tabulās. Abas klauzas WHEN (NOT) MATCHED nav obligātas, bet vismaz vienai ir jābūt. Pēc When matched raksta update teikumu, kas mērķa tabulā koriģē kolonu vērtības atbilstoši izejas datiem. Pēc When not matched raksta insert teikumu, kas mērķa tabulā pievieno jaunu ierakstu.

 Impementācijas 
Oracle Merge teikums ir sastopams kopš 9i versijas. 
SQL Server Merge teikums tika ieviests 2008 versijā.
MySQL Merge teikuma nav, bet ir līdzīgas funkcionalitātes SQL teikumi, kas neatbilst SQL standartam, piemēram, Replace vai Insert .. on duplicate key update.

 Ārējās saites 
 Merge teikums
 Microsoft SQL Server Merge teikuma sintakse
 Oracle Merge teikuma sintakse

Kategorija:SQL