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 :
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!