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

Langage SQL Discussion :

Merge insert duplicate key in object index


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 36
    Points
    36
    Par défaut Merge insert duplicate key in object index
    Bonjour,

    J' effectue de la maintenance sur procédure stockée qui Update/Insert par l' intermédiaire de la commande MERGE.

    Sur la ma table de destination je n 'ai pas de clé primaire... mais un index double(col1 et col2) unique. qui sont en réalité des clés externes. cette table est une table de relation.


    Les conditions de jointure sont sur la col1 et col2

    ON table_source.col1 = target_table.col1
    AND table_source.col2 = target_table.col2

    <table_source> avec target_table afin de déterminer où la correspondance a lieu.

    Lors de l'execution violation de contrainte sur mon index unique col1 et col2

    Je ne comprends pas pourquoi il y a un viol de contrainte sachant que mes conditions de jointure sont sur les champs qui composent l'index unique.

    il devrait passer sur WHEN MATCHED THEN et faire update.

    qu'est qui fait que le WHEN MATCHED THEN ne detecte pas mes données ?

    devrais je creer une primarykey double unique dans la table destination?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il est fort probable que ce soit à la source que vous ayez votre doublon.

    Compte-tenu de l'aspect ensembliste de la fonction MERGE, la vérification de la jointure n'est effectuée qu'une seule fois en début de requête.
    Dès lors, vos deux doublons vont être envoyés dans la clause WHEN NOT MATCHED, le premier va rentrer et le second va être rejeté par la contrainte d'unicité.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 36
    Points
    36
    Par défaut res
    merci pour ta réponse ça fait plaisir.

    je vais mieux analyser ma source mais justement et je n'ai pas de doublons dans ma source.

    j'ai deja rencontré ce bug doublons source et le descriptif de l'erreur était

    L'instruction MERGE a tenté à plusieurs reprises une opération UPDATE ou DELETE sur la même ligne. Cela se produit lorsqu'une ligne
    cible correspond à plusieurs lignes sources. Une instruction MERGE ne peut pas effectuer à plusieurs reprises une opération UPDATE/DELETE
    sur la même ligne de la table cible. Affinez la clause ON de sorte qu'une ligne cible corresponde au plus à une ligne source ou utilisez la clause GROUP BY pour regrouper les lignes sources.


    j'ai fait une modification dans ce sens.

    Le problème est différent. je suis bloqué

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Pouvez vous poster la structure des table et la requête MERGE en question ?


    Quel est votre SGBDR ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 36
    Points
    36
    Par défaut
    Waldar Tu as raison ! c' est lié aux doublons.

    j'ai trouvé mon erreur elle n'est pas lié à ma structure de table ou le Merge.

    Mais simplement a un traitement de dedup/fusion.

    Je dois exclure de mon traitement les données qui ont été bloqué par la dedup/fusion.

    Exclure les données enfants

    Mon explications je pense n'est pas tres explicite. :-)

    Merci a vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2014, 15h44
  2. Requête insert + duplicate key update
    Par sfpx dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/05/2012, 07h16
  3. Réponses: 25
    Dernier message: 29/07/2010, 19h30
  4. [MySQL] Insertions multiples avec un ON DUPLICATE KEY comment ça marche?
    Par Sayrus dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/04/2008, 13h41
  5. INSERT ... ON DUPLICATE KEY UPDATE
    Par luffy san dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/10/2005, 17h29

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