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

Designer Oracle Discussion :

pb de primary key sur 2 colonnes


Sujet :

Designer Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut pb de primary key sur 2 colonnes
    Bonjour,

    en revoyant mon modèle conceptuel j'e me suis aperçu que j'ai oublié de désigner un champ COD_ART comme état également primary key
    Or quand je tape la clause alter table , on me dit qu'il ne peut y avoir qu'un seul champ primary key.
    Pouvez vous m'aider à remédier à ce petit problème.
    Merci beaucoup de votre aide.


    Voici ce que j'ai codé
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alter table lignes_commande ADD constraint primary key (COD_ART);
    Cordialement.

    Nathalie Harbonne

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Par défaut
    Je pense qu'il te faut supprimer ta primary key avant de la recreer

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE la_table 
        DROP PRIMARY KEY CASCADE;

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut pb de primary key sur 2 colonnes
    Bonjour,

    Mon problème est de désigner deux colonnes en tant que primary key et pas de supprimer deux primary key.

    Merci de votre aide.
    Cordialement.
    Nathalie

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    tu ne peux avoir deux primary key.
    donc si tu dois droppper la première pour mettre la deuxième.
    Par contre, tu peux avoir n unique key ce qui peux resoudre ton problème.

    La différence?
    Une unique key autorise les valeurs nulles

  6. #6
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    Pour créer un clé primaires sur deux champs, il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table lignes_commande ADD constraint primary key (COD_ART,  TON_AUTRE_COLONNE  );
    Les remarques précédentes sont bonnes car tu ne pourras pas créer 2 clés primaires sur une table, il faudra donc que tu supprimes l'ancienne.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut pb de primary key sur 2 colonnes
    Rebonjour,

    çà ne fonctionne malheureusement pas.
    J'ai le message suivant : type de données non valide sur le premier champ).

    A quoi cela peut il bien se rapporter, car je ne vois pas de pb de type de données sur le premier champ qui est de type number!( peut être est ce du fait de la parenthèse?)

    Cordialement.
    Nathalie

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Par défaut
    Tu ne peux pas créer un index primaire si l'un des articles de la table contient une valeur NULL dans l'un des champs de l'index.

    Suis-je assez clair, parce qu'un problème comme ça, ça se résoud en deux minutes chrono.

  9. #9
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    Donne nous la syntaxe de ton ordre SQL et le code erreur Oracle.

    Lorque tu créés une clé primaire, la base de données regarde si tous les champs impactés sont valides pour la constitution de la clés. Si une condition n'est pas réunie, alors la clé ne peut pas être faite. Les causes peuvent être une valeur nulle dans une colonne, des doublons présents, ...

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut pb de primary key sur 2 colonnes
    Bonjour,

    voici la commande sql rxecutée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alter table lignes_commande ADD constraint primary key(num_cde, cod_art);
    voici le message d'erreur qui s'affiche avec une petite étoile au niveau de la première parenthèse de gauche avant num_cde

    type de données non valide

    voici la description de la table lignes_commande

    NOM NULL? TYPE

    num_cde number(5)
    cod_art number(5)
    qte_art number(5)
    code_etat varchar2(2)


    Merci beaucoup de votre aide.
    Cordialement.
    Nathalie

  11. #11
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Faut nommer la contrainte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table lignes_commande ADD constraint PK_LIGCDE primary key(num_cde, cod_art);
    Pour le nom, tu mets celui que tu veux.

  12. #12
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    Execute la requete suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM lignes_commande 
    WHERE num_cde IS NULL
       OR cod_art IS NULL;
    Tu auras les lignes qui posent problèmes pour la construction de ta clés primaires. J ai fais un test en essayant de faire un primary key sur une colonne contenant des "nul" et j ai la meme erreur. Il faut absolument que tu remplaces les valeurs nulles de tes colonnes par des valeurs correctes.

    Bon courage.

    Vincent

  13. #13
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    Citation Envoyé par McM
    Faut nommer la contrainte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table lignes_commande ADD constraint PK_LIGCDE primary key(num_cde, cod_art);
    Pour le nom, tu mets celui que tu veux.
    L'erreur ne vient pas de là. On peut créer une contrainte sans la nommer, c est Oracle qui lui donne un identifiant. Mais il est grandement préférable de la nommer pour la retrouver plus facilement.

  14. #14
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Oracle 9.2.0.5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL> ALTER TABLE WTACHES ADD CONSTRAINT PRIMARY KEY(INTITULE); 
    ALTER TABLE WTACHES ADD CONSTRAINT PRIMARY KEY(INTITULE)
                                                  *
    ERROR AT line 1:
    ORA-00902: invalid datatype
     
     
    SQL> ALTER TABLE WTACHES ADD CONSTRAINT PK_WTACHES PRIMARY KEY(INTITULE); 
     
    TABLE altered.
     
    SQL>

  15. #15
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Dans le cas d'une colonne vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> ALTER TABLE WTACHES ADD CONSTRAINT PK_WTACHES PRIMARY KEY(INTITULE, COL_NULL); 
    ALTER TABLE WTACHES ADD CONSTRAINT PK_WTACHES PRIMARY KEY(INTITULE, COL_NULL)
                                                                        *
    ERROR at line 1:
    ORA-01449: column contains NULL values; cannot alter to NOT NULL
    SQL>

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

Discussions similaires

  1. foreign-key sur plusieurs colonnes (Hibernate 3)
    Par ep31 dans le forum Hibernate
    Réponses: 1
    Dernier message: 27/10/2008, 16h00
  2. Primary Key sur mois et année d'une date
    Par Somato dans le forum SQLite
    Réponses: 4
    Dernier message: 19/06/2008, 18h57
  3. Supprimer de la table un primary key de la colonne
    Par hablo_ved dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/05/2008, 14h50
  4. primary key sur plusieurs colonnes d'une table
    Par hotttttsauce dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/04/2008, 13h20
  5. Réponses: 3
    Dernier message: 10/08/2007, 17h17

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