Maison > base de données > tutoriel mysql > Comment puis-je effectuer une opération UPSERT dans la base de données Oracle ?

Comment puis-je effectuer une opération UPSERT dans la base de données Oracle ?

Susan Sarandon
Libérer: 2025-01-20 21:28:15
original
292 Les gens l'ont consulté

How Can I Perform an UPSERT Operation in Oracle Database?

Opération UPSERT dans la base de données Oracle

L'opération UPSERT (Mettre à jour ou Insérer dans un tableau) fournit un moyen pratique de modifier des lignes existantes ou d'ajouter de nouvelles lignes à un tableau selon qu'il existe ou non une ligne avec des données correspondantes.

Défis d'UPSERT dans Oracle Database

Contrairement à certaines autres bases de données, Oracle ne fournit pas d'instruction UPSERT dédiée. Pour surmonter ce problème, nous utilisons l'instruction MERGE, qui est un mécanisme puissant permettant de combiner des données provenant de plusieurs sources de données.

Effectuer l'opération Oracle UPSERT à l'aide de MERGE

L'instruction MERGE exploite deux tables, l'une comme table cible (mergetest ici) et l'autre comme espace réservé (DUAL). Grâce à cette technologie, nous pouvons implémenter la fonction UPSERT :

  1. MERGE dans mergetest m en utilisant dual on (a = xa) : Cette ligne identifie la table cible et établit la condition de jointure basée sur la colonne "a".
  2. en cas de non-correspondance, insérez les valeurs (a,b) (xa,1) : Cette clause d'insertion créera une nouvelle ligne si aucune ligne correspondante n'est trouvée dans "mergetest", Où colonne " a" est défini sur "xa" et la colonne "b" est définie sur 1.
  3. en cas de correspondance, mettez à jour l'ensemble b = b 1 : Cette clause de mise à jour incrémente la valeur de la colonne "b" de 1 si une ligne correspondante est trouvée.

Exemple de mise en œuvre

Considérez le code suivant :

<code class="language-sql">create or replace procedure ups(xa number) as 
begin 
  merge into mergetest m using dual on (a = xa) 
  when not matched then insert (a,b) values (xa,1) 
  when matched then update set b = b+1; 
end ups;
/</code>
Copier après la connexion

Cette procédure définit une fonction pour effectuer l'opération UPSERT.

Utilisation :

<code class="language-sql">call ups(10);
call ups(10);
call ups(20);
select * from mergetest;</code>
Copier après la connexion

Sortie :

<code>A                      B
---------------------- ----------------------
10                     2
20                     1</code>
Copier après la connexion

Conclusion

En utilisant l'instruction MERGE, nous pouvons implémenter efficacement la fonction UPSERT dans Oracle, nous permettant de modifier ou d'insérer des données dans la table selon l'existence ou non de lignes correspondantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal