Maison >base de données >tutoriel mysql >Comment effectuer des opérations UPSERT dans les bases de données Oracle ?

Comment effectuer des opérations UPSERT dans les bases de données Oracle ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-20 21:39:10521parcourir

How to Perform UPSERT Operations in Oracle Databases?

Effectuer l'opération UPSERT dans la base de données Oracle

L'opération UPSERT - une combinaison de mise à jour et d'insertion - modifie les données dans la table. Oracle ne dispose pas d'une instruction UPSERT dédiée, la question se pose donc de savoir comment y parvenir efficacement.

Solution : instruction MERGE

Oracle fournit l'instruction MERGE, qui fusionne les données d'une table à une autre. Il permet trois opérations : insérer, mettre à jour et supprimer. En utilisant une table DUAL (contenant une seule ligne et une seule colonne), on peut simuler une opération UPSERT.

Exemple :

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

Utilisation :

<code class="language-sql">-- 创建必要的表
drop table mergetest;
create table mergetest(a number, b number);

-- 调用过程以执行UPSERT
call ups(10);
call ups(10);
call ups(20);

-- 验证结果
select * from mergetest;</code>

Sortie :

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

Cette instruction MERGE garantit que si une ligne correspondant à la clé spécifiée (xa) existe, la ligne est mise à jour, sinon une nouvelle ligne est insérée.

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