Résumé: dans ce didacticiel, vous apprendrez à utiliser l’instruction Oracle MERGE
pour effectuer une mise à jour ou une insertion données basées sur une condition spécifiée.
Introduction à l’instruction Oracle MERGE
L’instruction Oracle MERGE
sélectionne les données dans une ou plusieurs tables source et le met à jour ou l’insère dans une table cible. L’instruction MERGE
vous permet de spécifier une condition pour déterminer s’il faut mettre à jour ou insérer des données dans la table cible.
Ce qui suit illustre la syntaxe d’Oracle MERGE
instruction:
Examinons l’instruction MERGE
en détail:
Tout d’abord, spécifiez la table cible (target_table
) dans laquelle vous souhaitez mettre à jour ou insérer dans la clause INTO
.
Deuxièmement, spécifiez la source des données (source_table
) à mettre à jour ou à insérer dans la clause USING
.
Troisièmement, spécifiez la condition de recherche sur laquelle l’opération de fusion se met à jour ou s’insère dans la clause ON
.
Pour chaque ligne de la table cible, Oracle évalue la condition de recherche:
- Si le résultat est vrai, Oracle met à jour la ligne avec les données correspondantes de la table source.
- Si le résultat est faux pour un y lignes, puis Oracle insère la ligne correspondante de la table source dans la table cible.
L’instruction MERGE
devient pratique lorsque vous souhaitez combiner plusieurs instructions INSERT
, UPDATE
et DELETE
en une seule opération.
Étant donné que MERGE
est une instruction déterministe, vous ne pouvez pas mettre à jour plusieurs fois la même ligne de la table cible dans la même MERGE
instruction .
Vous pouvez ajouter une clause facultative DELETE WHERE
à la clause MATCHED
pour nettoyer après une opération de fusion. La clause DELETE
supprime uniquement les lignes de la table cible qui correspondent à la fois à ON
et DELETE WHERE
clauses.
Conditions préalables d’Oracle MERGE
Pour exécuter l’instruction MERGE
, vous devez disposer de la INSERT
et UPDATE
sur les tables source. Si vous utilisez la clause DELETE
, vous devez également disposer du privilège d’objet DELETE
sur la table cible.
Oracle Exemple MERGE
Supposons que nous ayons deux tables: members
et member_staging
.
Nous insérez une nouvelle ligne dans la table members
chaque fois que nous avons un nouveau membre. Ensuite, les données de la table members
sont fusionnées avec les données de la table member_staging
.
Les instructions suivantes créer les tables members
et member_staging
:
Les INSERT
instructions insèrent des exemples de données dans les tables members
et member_staging
:
Lors de la mise à jour des données à partir de members
table en member_staging
table, nous devons effectuer les actions suivantes:
- Nous mettons à jour les lignes avec l’identifiant de membre 1, 3 , 4 et 6 car le rang ou le nom de famille de ces membres dans ces tableaux sont différents.
- Nous insérons les lignes avec l’ID de membre 7 à 10 car ces lignes existent dans le
members
mais pas dans la tablemember_staging
.
Au total 8 lignes doivent être fusionnées.
La suite est l’instruction MERGE
qui effectue toutes ces actions en une seule fois.
L’instruction de fusion compare chaque ligne de members
avec chaque ligne de la table member_staging
basée sur les valeurs des colonnes member_id
(voir les ON
ci-dessus).
Si les valeurs des colonnes member_id
des deux tables sont égales, le MERGE
met à jour le prénom, le nom et le rang de la table members
vers la table member_staging
uniquement si les valeurs de first Les colonnes nom, nom ou rang des deux tables sont différentes.
Sinon, elle insère la ligne de la table members
dans la member_staging
table.
Oracle a renvoyé 8 lignes fusionnées comme prévu.
Dans ce didacticiel, vous avez appris à utiliser Oracle MERGE
instruction pour mettre à jour ou insérer des données basé sur une condition spécifiée.
- Ce didacticiel vous a-t-il été utile?
- OuiNon