Maison >base de données >tutoriel mysql >Comment puis-je implémenter la fonctionnalité UPSERT dans Oracle ?

Comment puis-je implémenter la fonctionnalité UPSERT dans Oracle ?

DDD
DDDoriginal
2025-01-20 21:47:15188parcourir

How Can I Implement UPSERT Functionality in Oracle?

Oracle UPSERT : Techniques et mise en œuvre

Oracle ne prend pas en charge nativement les opérations UPSERT (mises à jour ou insertions simultanées basées sur des critères de correspondance). Cependant, plusieurs méthodes reproduisent efficacement cette fonctionnalité. Une approche courante et efficace utilise la déclaration MERGE.

L'instruction MERGE facilite la manipulation des données entre deux tables. L'utilisation de DUAL comme table source fournit une implémentation UPSERT concise :

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

Illustrons avec une table et des appels de procédure :

<code class="language-sql">drop table mergetest;
create table mergetest(a number, b number);
call ups(10);
call ups(10);
call ups(20);
select * from mergetest;</code>

Cela donne :

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

Comme indiqué, UPSERT basé sur MERGE met à jour les enregistrements existants (correspondant à la clé) et en insère de nouveaux (clés non correspondantes). Cette méthode fournit un moyen propre et efficace de maintenir l’intégrité des données.

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