Les bases de données sont toutes une question d'opérations CRUD. Nous créons, lisons, mettons à jour et supprimons les données dans diverses tables de base de données. Cependant, la plupart des opérations CRUD dans une base de données nécessitent une logique distincte pour les tâches, telles que l'insertion, la mise à jour et la suppression.
Cela peut devenir redondant rapidement. SQL Server fournit un moyen efficace d'effectuer des opérations de crud à l'aide de l'instruction Merge. Microsoft a présenté l'instruction Merge dans SQL Server 2008 et au-dessus.
Ce tutoriel comprendra comment utiliser l'instruction SQL Server Merge pour effectuer plusieurs opérations dans une seule requête.
Les bases
Laissez-nous prendre un exemple de l'endroit où vous avez deux tables. Les tables cibles et source. Si vous devez mettre à jour les valeurs dans la table cible en fonction des valeurs des tables source, vous pouvez prendre trois chemins:
Pour effectuer les opérations ci-dessus individuellement, nous devons créer trois logiques distinctes pour les opérations d'insertion, de suppression et de mise à jour. Cependant, nous pouvons les combiner en utilisant l'instruction Merge.
Nous pouvons exprimer la syntaxe de l'instruction Merge comme indiqué:
Fusionner Target_Table à l'aide de Source_TableNous identifions le tableau cible et source et les spécifions dans la clause de fusion. Nous spécifions ensuite une condition. La condition spécifiée contrôle comment les lignes de la table source sont adaptées aux tables cibles. Considérez-le comme une condition de jointure.
Le bloc suivant contient les actions à effectuer en fonction du résultat de la condition spécifiée.
Si la condition entraîne une correspondance, nous mettons à jour les enregistrements dans le tableau cible de la table source.
Cependant, si les enregistrements sont inégalés (à partir de la table cible), nous insérons les enregistrements manquants dans le tableau cible.
Enfin, si les enregistrements sont inégalés (par la table cible), nous supprimons les enregistrements inégalés de la table cible.
SQL Server - Exemple de fusion
Prenons un exemple simple. Supposons que nous disposons de deux tableaux contenant des informations sur les produits comme produits_target et product_source.
L'exemple d'extrait de code montre les requêtes SQL pour créer et mettre à jour les tables spécifiées.
Utiliser SalesDB;Maintenant, nous avons deux tables en tant que cible et source. Les enregistrements stockés dans les tableaux sont indiqués:
Pour synchroniser les données entre le tableau cible et source, nous pouvons exécuter une requête de fusion comme indiqué dans l'exemple ci-dessous:
Fusionner les produits_target comme tUne fois que nous aurons exécuté la requête ci-dessus, le serveur SQL effectuera les opérations spécifiées en fonction de la condition résultante.
Nous pouvons interroger les tables après l'opération de fusion comme:
SELECT * FROM products_source;Les valeurs résultantes sont comme indiqué dans l'exemple ci-dessous:
Comme vous le remarquerez, les enregistrements de table source et cible sont synchronisés avec les valeurs mises à jour, insérées et supprimées.
Conclusion
Ce guide vous montre comment travailler avec l'instruction SQL Server Merge. Il vous permet d'effectuer des opérations d'insertion, de mise à jour et de suppression sur les tables en fonction des conditions résultantes.
Merci pour la lecture!