Instruction SQL MERGE combine INSÉRER , SUPPRIMER , et Instructions UPDATE en une seule requête.
dactylographié en boucle foreach
Instruction MERGE en SQL
L'instruction MERGE dans SQL est utilisée pour effectuer des opérations d'insertion, de mise à jour et de suppression sur un table cible basé sur les résultats de JOIN avec un table source . Cela permet aux utilisateurs de synchroniser deux tables en effectuant des opérations sur une table en fonction des résultats de la seconde table.
L'instruction MERGE compare les données entre une table source et une table cible en fonction des champs clés spécifiés. Il effectue les actions appropriées telles que l'insertion de nouveaux enregistrements, la mise à jour des enregistrements existants et la suppression ou le marquage des enregistrements qui ne sont plus présents dans la source.
Cette instruction offre un moyen flexible de gérer les modifications des données et est couramment utilisée dans des scénarios tels que la maintenance Dimensions qui changent lentement ( SCD ) dans FUSIONNER DANS target_table
UTILISER source_table
SUR merge_condition
QUAND CORRESPOND ALORS
UPDATE SET colonne1 = valeur1 [, colonne2 = valeur2 …]
QUAND NE CORRESPOND PAS ALORS
INSÉRER (colonne1 [, colonne2 …])
VALEURS (valeur1 [, valeur2 …]);
Exemple d'instruction SQL MERGE
Supposons qu'il y ait deux tableaux :
- LISTE DE PRODUITS qui est le tableau qui contient les détails actuels sur les produits disponibles avec les champs P_ID, P_NAME et P_PRICE correspondant à l'ID, au nom et au prix de chaque produit.
- LISTE MISE À JOUR qui est le tableau qui contient les nouveaux détails sur les produits disponibles avec les champs P_ID, P_NAME et P_PRICE correspondant à l'ID, au nom et au prix de chaque produit.

La tâche consiste à mettre à jour les détails des produits dans la PRODUCT_LIST conformément à la UPDATED_LIST.
Solution
Maintenant, afin de mieux expliquer cet exemple, divisons l'exemple en étapes.
Étape 1 : Reconnaître la table TARGET et SOURCE
Ainsi, dans cet exemple, puisqu'il est demandé de mettre à jour les produits dans PRODUCT_LIST selon UPDATED_LIST, donc PRODUCT_LIST agira comme TARGET et UPDATED_LIST agira comme table SOURCE.

Étape 2 : Reconnaître les opérations à effectuer.
Maintenant, comme on peut le constater, il existe trois disparités entre les tables TARGET et SOURCE, à savoir :
1. Le coût du CAFÉ dans TARGET est de 15,00 tandis que dans SOURCE il est de 25,00
PRODUCT_LIST 102 COFFEE 15.00 UPDATED_LIST 102 COFFEE 25.00>
2. Il n'y a pas de produit BISCUIT dans SOURCE mais il est dans TARGET
qu'est-ce qu'obj en java
PRODUCT_LIST 103 BISCUIT 20.00>
3. Il n'y a pas de produit CHIPS dans TARGET mais il est dans SOURCE
UPDATED_LIST 104 CHIPS 22.00>
Par conséquent, trois opérations doivent être effectuées dans TARGET en fonction des écarts ci-dessus. Ils sont:
1. Opération de MISE À JOUR
102 COFFEE 25.00>
2. Opération SUPPRIMER
rebase git
103 BISCUIT 20.00>
3. Opération INSÉRER
104 CHIPS 22.00>
Étape 3 : écrivez la requête SQL
Le requête SQL d'effectuer les opérations mentionnées ci-dessus à l'aide du Instruction MERGE est:
SQL /* Selecting the Target and the Source */ MERGE PRODUCT_LIST AS TARGET USING UPDATE_LIST AS SOURCE /* 1. Performing the UPDATE operation */ /* If the P_ID is same, check for change in P_NAME or P_PRICE */ ON (TARGET.P_ID = SOURCE.P_ID) WHEN MATCHED AND TARGET.P_NAME SOURCE.P_NAME OR TARGET.P_PRICE SOURCE.P_PRICE /* Update the records in TARGET */ THEN UPDATE SET TARGET.P_NAME = SOURCE.P_NAME, TARGET.P_PRICE = SOURCE.P_PRICE /* 2. Performing the INSERT operation */ /* When no records are matched with TARGET table Then insert the records in the target table */ WHEN NOT MATCHED BY TARGET THEN INSERT (P_ID, P_NAME, P_PRICE) VALUES (SOURCE.P_ID, SOURCE.P_NAME, SOURCE.P_PRICE) /* 3. Performing the DELETE operation */ /* When no records are matched with SOURCE table Then delete the records from the target table */ WHEN NOT MATCHED BY SOURCE THEN DELETE /* END OF MERGE */>
Sortir:
PRODUCT_LIST P_ID P_NAME P_PRICE 101 TEA 10.00 102 COFFEE 25.00 104 CHIPS 22.00>
Ainsi, de cette façon, nous pouvons exécuter ces trois instructions principales en SQL ensemble à l’aide de l’instruction MERGE.
Note: Tout nom autre que cible et source peut être utilisé dans la syntaxe MERGE. Ils sont utilisés uniquement pour vous donner une meilleure explication.
Points importants concernant l'instruction SQL MERGE
- L'instruction SQL MERGE combine INSÉRER , MISE À JOUR , et SUPPRIMER opérations en une seule instruction, permettant une synchronisation efficace des données entre les tables source et cible.
- Il offre une flexibilité dans la personnalisation de scripts SQL complexes en gérant plusieurs opérations de manipulation de données en une seule transaction.
- L'instruction SQL MERGE est couramment utilisée dans des scénarios tels que la maintenance de dimensions à évolution lente (SCD) dans des entrepôts de données.
- Une indexation appropriée, des conditions de jointure optimisées et un filtrage de la table source pour les enregistrements nécessaires peuvent optimiser les performances de l'instruction MERGE.