Conception Et Réalisation (SQL Server) by Grare Stéphane - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

MERGE

MERGE est une nouveauté de SQL Server 2008, qui permet d’effectuer plusieurs opérations

INSERT, UPDATE et DELETE en une seule instruction. En fonctions de conditions,

l’instruction MERGE peut :

. Mettre à jour une ligne si elle existe, ou insérer les données dans une nouvelle ligne

83

. Synchroniser le contenu de 2 tables

Soit la table RECAP qui est alimentée toutes les nuits par un processus lisant les commandes

du jour : Si le produit commandé existe dans la table RECAP, la quantité totale est

incrémentée de la quantité commandée, s’il n’existe pas, une nouvelle ligne est créée dans la

table RECAP.

MERGE RECAP as Cible

USING (SELECT IDProduit, QteCommandee FROM DETAILCOMMANDE

WHERE DateCde = CAST(GETDATE() as DATE)) as Source

ON ( Cible.IDProduit = Source.IDProduit)

WHEN MATCHED

THEN UPDATE Set Cible.QteTotale = Cible.QteTotale + Source.QteCommandee

WHEN NOT MATCHED

THEN INSERT (IDProduit, QteTotale)

VALUES(Source.IDProduit,Source.QteCommandee);

--Une instruction MERGE doit se terminer par un point-virgule

La clause INTO spécifie la table ou vue qui est la cible des opérations d'insertion, de mise à

jour ou de suppression.

La clause USING…ON spécifie la table ou la requête à appliquer en tant que conditions de

recherche pour les critères correspondants.

Les clauses WHEN spécifient les actions à prendre en fonction des résultats de la clause

USING…ON.

o WHEN MATCHED indique que la condition est vérifiée

o WHEN NOT MATCHED [BY TARGET] indique que la condition n’est pas vérifiée du

fait de la cible

o WHEN NOT MATCHED [BY SOURCE] indique que la condition n’est pas vérifiée du

fait de la source

La clause OUTPUT retourne une ligne pour chaque ligne dans l'objet cible mis à jour, inséré

ou supprimé.