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
[modifier | modifier le code]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
[modifier | modifier le code]- (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
[modifier | modifier le code]- Documentation du Merge pour DB2 z/OS
- Documentation du Merge d'Oracle 11g R2
- Documentation du Merge dans SQL Server 2012