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

Développement SQL Server Discussion :

MERGE - Violation of PRIMARY KEY constraint


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Points : 71
    Points
    71
    Par défaut MERGE - Violation of PRIMARY KEY constraint
    Salut,
    J'ai un soucis de MERGE ,
    Ma source :
    1(PK),A
    2(PK),B
    1(PK),C

    Ma target est vide.

    L'error :
    Violation of PRIMARY KEY constraint 'PK_'. Cannot insert duplicate key in object 'maCible'. The duplicate key value is (1).


    La commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MERGE into maCible as target
    USING maSource as source
    ON TARGET.id= SOURCE.id
    WHEN NOT MATCHED THEN
    insert values(source.id,source.value);
    Je sais que l'erreur est "normale",vu qu'il essaie d'insérer 2x la clé 1 dans le même commit, mais serait-il possible de la gérer afin d'éviter que tout le merge ne crash?

  2. #2
    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

    Il faut dans ce cas le gérer en amont, par exemple en faisant une requete sur la table source. Reste à savoir si vous voulez conserver A ou C ?!

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    MERGE into maCible as target
    USING (
        SELECT id
                 , min(value) as value
        from maSource 
        GROUP BY id
    )as source
    ON TARGET.id= SOURCE.id
    WHEN NOT MATCHED THEN
    insert values(source.id,source.value);

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Points : 71
    Points
    71
    Par défaut
    Pas d'autre solution?
    Car cette source (revidée à chaque exécution) contient a chaque fois 150 millions de lignes (et l'unicité est une combinaison de 3 colonnes). Du coup la requête détectant les doublons est lente à exécuter.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2014, 16h44
  2. Violation of Primary Key sans données
    Par Baquardie dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 26/01/2010, 20h41
  3. Violation of PRIMARY KEY constraint
    Par DEV-10 dans le forum Développement
    Réponses: 6
    Dernier message: 30/11/2009, 16h01
  4. probleme Violation of unique key constraint et SSIS
    Par housni dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 07/08/2007, 17h28
  5. Message d'erreur 'violation of FOREIGN KEY constraint' de Interbase
    Par abdelghani_k dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/06/2007, 10h11

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