IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Qu'est-ce qu'un merge ?


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Qu'est-ce qu'un merge ?
    Bon voilà, après quelques recherches infructueuses sur ce type opération, j'ai une vague en quoi cela consiste. Je voudrai avoir d'avantage d'informations à ce sujet. Comment s'y prend-on sous Oracle, la syntaxe utilisée, les cas concrets où c'est efficient, etc.

  2. #2
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    Par défaut
    Le MERGE est une commande SQL introduite sous Oracle 9i.

    Cela consiste à mettre à jour les données si elle existe dans la table, sinon les données sont créés.

    Comme toute requête SQL, celle-ci est efficace si il y a les bons index (comme pour l'UPDATE).

    Pour avoir des exemples, rien de tel que de regarder la doc Oracle 'SQL References'.

    http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_915a.htm#SQLRF01606

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Points : 8 079
    Points
    8 079
    Par défaut
    L'instruction MERGE permet conditionnellement soit d'insérer des données dans une table, soit de mettre à jour des enregistrements existants. Quand il y correspondance de clé entre la source et la cible, c'est une mise à jour qui a lieu (WHEN MATCHED THEN UPDATE) sinon c'est une insertion (WHEN NOT MATCHED THEN INSERT).
    La source des données est spécifiée par la clause USING. La condition d'identification est introduite par ON et elle ne peut porter que sur une seule colonne, donc a priori une clé primaire monocolonne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    MERGE INTO bonuses D
       USING (SELECT employee_id, salary, department_id FROM employees
       WHERE department_id = 80) S
       ON (D.employee_id = S.employee_id)
       WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
       WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)
       VALUES (S.employee_id, S.salary*0.1);

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    OK, merci. Je crois que j'ai pigé.

Discussions similaires

  1. Qu'est ce qu'un grand projet ?
    Par Geronimo dans le forum Débats sur le développement - Le Best Of
    Réponses: 62
    Dernier message: 04/04/2013, 14h52
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. Réponses: 2
    Dernier message: 29/04/2010, 10h02
  4. Quelle est la fiabilité du protocole SSL ?
    Par Anonymous dans le forum Développement
    Réponses: 5
    Dernier message: 05/09/2002, 13h31
  5. apprentissage du C est-il necessaire pour C++ ?
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 02/05/2002, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo