Merge (SQL)
La commande Merge en SQL est une instruction qui permet de mettre Ă jour ou insĂ©rer un ou plusieurs tuples dans une table (ou vue) d'une base de donnĂ©es relationnelle Ă partir de donnĂ©es sources, selon des conditions. Cette commande a Ă©tĂ© rajoutĂ©e dans le standard SQL:2003, et Ă©tendue dans le standard SQL:2008, et permet d'Ă©viter des combinaisons dâinstructions Insert, Update et Delete sur la table cible.
Syntaxe
MERGE INTO table_cible T -- table Ă modifier
USING données_source S -- Listes des données sources
ON (Conditions1) -- Condition de correspondance/jointure
WHEN MATCHED THEN -- Si vrai
UPDATE SET t.colonne1 = valeur1 [, t.colonne2 = valeur2 ...] ---- Mise Ă jour
DELETE WHERE (Conditions2) ---- ou Suppression sous condition
WHEN NOT MATCHED THEN -- Si faux
INSERT [ ( liste_colonnes) ] { VALUES ( liste_valeurs) | DEFAULT VALUES } ---- Ajout
Une jointure droite externe (Right outer join) est effectuĂ©e entre la cible et la source. Si plusieurs tuples de la source correspondent Ă un mĂȘme tuple de la cible alors une erreur est levĂ©e. Dans la syntaxe, Conditions1 reprĂ©sente la condition de jointure qui permet de dĂ©finir si un tuple cible doit ĂȘtre ajoutĂ© ou mise Ă jour (ou supprimĂ©e si on est dans le cas de la Conditions2). Cela signifie que si un tuple source correspond selon la condition de jointure Ă un tuple de la table cible alors les instructions dans WHEN MATCHED THEN sont effectuĂ©es. Si un tuple source ne correspond pas Ă la condition de jointure alors les instructions dans WHEN NOT MATCHED THEN sont effectuĂ©es.
Les donnĂ©es sources peuvent provenir d'une table, d'une vue ou d'une sous requĂȘte.
Notes et références
- (en) Cet article est partiellement ou en totalitĂ© issu de lâarticle de WikipĂ©dia en anglais intitulĂ© « Merge (SQL) » (voir la liste des auteurs).
Liens externes
- Documentation du Merge pour DB2 z/OS
- Documentation du Merge d'Oracle 11g R2
- Documentation du Merge dans SQL Server 2012