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
Susan Sarandonoriginal
2025-01-20 21:28:15294parcourir

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>

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>

Sortie :

<code>A                      B
---------------------- ----------------------
10                     2
20                     1</code>

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!

Déclaration:
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