Sommaire

Agir sur les données à partir d’une autre table

1. L’ordre MERGE

Cette fonction permet d’insérer, de modifier ou de supprimer des enregistrements sur une table à partir de données d’une autre table ou vue.

Syntaxe

MERGE INTO <nom table1> 
  USING <nom table2> 
  ON <conditions> 
  WHEN MATCHED THEN 
    UPDATE SET <table1.colonne1> = valeur1, <table1.colonne2> = 
valeur2, ... ... 
    DELETE WHERE <conditions2> 
  WHEN NOT MATCHED THEN 
    INSERT <colonne1>, <colonne3>, ... ...  
    VALUES (valeur1, valeur3, ... ...)
  • MERGE INTO : table à modifier.

  • USING : les données source.

  • ON : conditions.

  • WHEN MATCHED THEN : les modifications ou suppressions effectuées lorsque la ou les conditions sont vérifiées.

  • WHEN NOT MATCHED THEN : les ajouts effectués lorsque la condition n’est pas vérifiée.

Exemple

Nous souhaitons augmenter le prix de 15% de la table Tarifs lorsque la colonne Commentaire de la chambre contient une donnée.

Voici la requête qui sélectionne les tarifs à augmenter de 15%. La jointure porte sur les deux clés étrangères de la table Tarifs pour qu’il n’y ait pas de doublon. L’idTarif est affiché pour s’en assurer. La restriction permet ne pas sélectionner les commentaires dont la valeur est NULL ou contient ...