Oracle MERGE (Français)

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 table member_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

Leave a Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *