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

SQL Firebird Discussion :

Erreur sur création d'une clé primaire


Sujet :

SQL Firebird

  1. #1
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut Erreur sur création d'une clé primaire
    Salut !

    Voulant créer une clé primaire pour une table qui compte déjà des données, j'ai eu ce message
    Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values.
    attempt to store duplicate value (visible to active transactions) in unique index "PK_TB_SR_SERVICE".
    Le message si je l'ai bien saisis mentionne que ma table compte des enregistrements en double, ce qui n'est pas le cas !

    donc comment remédier à ce problème en cherchant puis éliminant les doublons par commande sql ?

    merci par avance

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Bonjour,

    Le message dit qu'il y a des doublons dans la table ce qui fait échouer la création de la clé unique.

    Pour la recherche de doublon et comment les traiter il y a le très bon article d'SQLPRO :

    http://sqlpro.developpez.com/cours/doublons/

    Si vous n'y arrivez pas, pour vous aider il nous faudrait connaitre la tructure de la table et au minimum l'ordre de création de cette clé qui échoue.

    Cordialement

  3. #3
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    ok
    voici la structure de ma table
    CREATE TABLE TB_SR_SERVICE (
    CODE_SR SMALLINT NOT NULL,
    CODE_INTERNE SMALLINT NOT NULL,
    VOLUME_RELEVE BIGINT NOT NULL,
    DECHET_EXTRAI FLOAT NOT NULL,
    DATE_BILAN DATE NOT NULL
    );
    j'ai essayé avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COUNT(*) AS NBR_DOUBLES, date_bilan, code_sr
    FROM   tb_sr_service
    GROUP  BY code_sr, date_bilan
    HAVING COUNT(*) > 1
    car ma clé est composée de code_sr et date_bilan

    j'ai pu trouver deux doublons que j'ai supprimé mais quand j'ai voulu créé ma clé primaire le compilateur m'a retourné le premier message d'erreur

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Apres avoir supprimé les doublons, vous avez bien fait un commit de la transaction ?

    Sinon relancer la requête qui identifie les doublons juste avant la création de la clé primaire pour être certain qu'il n'y en a pas.

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par Barbibulle Voir le message
    Apres avoir supprimé les doublons, vous avez bien fait un commit de la transaction ?

    Sinon relancer la requête qui identifie les doublons juste avant la création de la clé primaire pour être certain qu'il n'y en a pas.
    oui oui j'ai tout fais dans l'ordre mais toujours ce message d'erreur. d'ailleurs voici en pièce-jointe le résultat de la fréquence d'apparition de chaque couple (code_sr, date_bilan) et qui est la preuve que les doublons sont absents. Le code de la requête est celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(*) as frequence, code_sr, date_bilan
    from tb_sr_service
    group by code_sr, date_bilan
    Fichiers attachés Fichiers attachés

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Salut

    Tu n'indiques pas quelle(s) est(son) la(les) colonne(s) pour la clé primaire. C'est cette clé qui doit être unique.

    Est ce, comme le suggère, ta requête code_sr, date_bilan ?

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par dehorter olivier Voir le message
    Salut

    Tu n'indiques pas quelle(s) est(son) la(les) colonne(s) pour la clé primaire. C'est cette clé qui doit être unique.

    Est ce, comme le suggère, ta requête code_sr, date_bilan ?
    Bonjour !
    oui c'est bien ça
    la bonne nouvelle c'est que ma clé primaire fonctionne. je crois que la transaction n'a pas bien fait son boulot hier car quand j'ai reconnecté aujourd'hui tout s'est normalement passé

    merci à tous

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

Discussions similaires

  1. Erreur sur création d'une fonction
    Par mister3957 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 30/04/2010, 16h10
  2. Erreur sur création d'une vue
    Par CinePhil dans le forum Débuter
    Réponses: 2
    Dernier message: 18/10/2009, 00h06
  3. erreur à la création d'une clé primaire
    Par dams78 dans le forum SQL
    Réponses: 1
    Dernier message: 11/01/2008, 11h25
  4. [VBA-E]erreur sur création d'une barre de menu
    Par roseau dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/03/2007, 11h17
  5. Réponses: 26
    Dernier message: 27/04/2005, 11h29

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