Maison > base de données > tutoriel mysql > Comment effectuer une opération Upsert dans Oracle à l'aide de MERGE ?

Comment effectuer une opération Upsert dans Oracle à l'aide de MERGE ?

Linda Hamilton
Libérer: 2025-01-20 21:41:12
original
871 Les gens l'ont consulté

How to Perform an Upsert Operation in Oracle Using MERGE?

Oracle Upsert : mettre à jour ou insérer efficacement des données

Problème :

Comment pouvez-vous effectuer une opération d'insertion dans Oracle : mettre à jour un enregistrement s'il existe ou en insérer un nouveau s'il n'existe pas ?

Solution : La MERGEDéclaration

Oracle n'a pas de commande UPSERT dédiée. L'instruction MERGE fournit cette fonctionnalité. Il combine efficacement les opérations de mise à jour et d'insertion en fonction d'une condition de jointure.

Exemple illustratif

Cet exemple présente un upsert utilisant l'instruction MERGE dans une procédure stockée :

<code class="language-sql">CREATE OR REPLACE PROCEDURE upsert_data (p_id NUMBER, p_value NUMBER)
AS
BEGIN
  MERGE INTO my_table target
  USING dual source
  ON (target.id = p_id)
  WHEN MATCHED THEN
    UPDATE SET target.value = p_value
  WHEN NOT MATCHED THEN
    INSERT (id, value) VALUES (p_id, p_value);
END;
/

-- Sample usage and verification
CREATE TABLE my_table (id NUMBER PRIMARY KEY, value NUMBER);

BEGIN
  upsert_data(1, 10);
  upsert_data(1, 20);  -- Update existing row
  upsert_data(2, 30);  -- Insert new row
END;
/

SELECT * FROM my_table;</code>
Copier après la connexion

Cette procédure, upsert_data, prend un identifiant et une valeur. L'instruction MERGE compare le p_id fourni avec les identifiants existants dans my_table.

  • WHEN MATCHED : Si une correspondance est trouvée, la colonne value est mise à jour en p_value.
  • WHEN NOT MATCHED : Si aucune correspondance n'est trouvée, une nouvelle ligne est insérée avec les p_id et p_value donnés.

L'instruction SELECT finale démontre les résultats combinés de mise à jour et d'insertion. Cette approche est efficace et évite le besoin d'instructions UPDATE et INSERT séparées avec des vérifications conditionnelles.

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