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 Oracle Discussion :

INSERT et violation de contrainte Unique Key


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut INSERT et violation de contrainte Unique Key
    Bonjour,

    je tente d'insérer dans une table des données en utilisant le SQL suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO TABLE1 (VAL1, VAL2) VALUES (6.0,232.0);
    --Ligne 2
    INSERT INTO TABLE1  (VAL1, VAL2) VALUES (13.0,232.0);
    --Ligne 3
    INSERT INTO TABLE1  (VAL1, VAL2) VALUES (20.0,232.0);
    La table de destination ne contient que les champs VAL1 et VAL2, de type NUMBER(38,0), pas de PK (il s'agit d'une table de liaison).

    Mes INSERT ne passent pas à cause d'une violation de contrainte unique
    Erreur commençant à la ligne 8 de la commande :
    INSERT INTO TABLE1 (VAL1, VAL2) VALUES (13.0,232.0)
    Rapport d'erreur :
    Erreur SQL : ORA-00001: violation de contrainte unique (TABLE1)
    00001. 00000 - "unique constraint (%s.%s) violated"
    *Cause: An UPDATE or INSERT statement attempted to insert a duplicate key.
    For Trusted Oracle configured in DBMS MAC mode, you may see
    this message if a duplicate entry exists at a different level.
    *Action: Either remove the unique restriction or do not insert the key.
    Seul le premier INSERT est inséré.
    Ce que je ne comprends pas puisque je suis absolument certain que les données que j'essaye d'insérer n'existent pas dans TABLE1.

    Qu'est ce qui peut expliquer ce "phénomène" ?

    D'avance merci pour vos conseils

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous avez une contrainte d'unicité ou un index unique sur la colonne val2.

    Regardez le script de création de votre table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select dbms_metadata.get_ddl('TABLE', 'TABLE1')
      from dual;

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    DBMS_METADATA.GET_DDL ne remontera pas l'index unique, regardez dans all_indexes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select index_name, uniqueness from all_indexes where table_name='TABLE1';
    Par ailleurs les tables de relation ont des PK.

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    @Waldar : merci pour la réponse.

    Le résultat de la requête :
    "
    CREATE TABLE "SC"."REFERENCE_LIEU"
    ( "REFERENCE" NUMBER(*,0) NOT NULL ENABLE,
    "LIEU" NUMBER(*,0) NOT NULL ENABLE,
    CONSTRAINT "REFERENCE_LIEU_UN" UNIQUE ("REFERENCE")
    USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "USERS" ENABLE,
    CONSTRAINT "REFERENCE_LIEU_LIEU_FK" FOREIGN KEY ("LIEU")
    REFERENCES "SC"."LIEU_MESURE" ("IDENTIFIANT") ENABLE,
    CONSTRAINT "REFERENCE_LIEU_REFERENCE_FK" FOREIGN KEY ("REFERENCE")
    REFERENCES "SC"."REFERENCE" ("IDENTIFIANT") ENABLE
    ) SEGMENT CREATION IMMEDIATE
    PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "USERS"
    "
    Edit : et le résultat de la demande de skuatamad:
    REFERENCE_LIEU_IDX NONUNIQUE
    REFERENCE_LIEU_UN UNIQUE

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONSTRAINT "REFERENCE_LIEU_UN" UNIQUE ("REFERENCE")
    Que donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from REFERENCE_LIEU where REFERENCE = 13

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Que donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from REFERENCE_LIEU where REFERENCE = 13
    Aucun résultat.
    C'est bien ce qui m'étonne

    Je ne connais pas bien Oracle, je me demandais si ce n'était pas un pb de séquence.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il faudrait voir les vraies commandes que vous avez passées, parce que nous ne savons pas ce que vous avez mis dans VAL1 ou VAL2 dans le premier sujet.

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

Discussions similaires

  1. Lenteur lors de Violation de la contrainte UNIQUE KEY
    Par ludo00002 dans le forum Firebird
    Réponses: 5
    Dernier message: 23/05/2012, 23h12
  2. Error ORA-00001: violation de contrainte unique
    Par delilou dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 17/03/2011, 17h26
  3. violation de contrainte unique (KOLOK.IDCONFIG_PK)
    Par Sephiroth Lune dans le forum Administration
    Réponses: 12
    Dernier message: 20/04/2007, 11h51
  4. [hibernate] Violation de contrainte unique
    Par miyabi dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/06/2006, 14h52
  5. Réponses: 2
    Dernier message: 13/02/2006, 11h13

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