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

Oracle Discussion :

Problemes de clé primaire


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Problemes de clé primaire
    Bonjour a tous !

    J'aurais voulu savoir si il était possible de créer une table avec une clé primaire de 3 champs.

    Je m'explique :

    Une recette est composée de plusieurs stades qui sont eux meme constitués de plusieurs ingrédients.

    J'ai donc les tables suivantes :
    Recette (pk : num_rec)
    Ingrédient (pk: num_ing)
    Stade (pk : num_stad , num_rec)

    J'aimerais créer la table entre Ingrédient et Stade qui aurait comme pk (num_rec, num_stad, num_ing).

    Voici mon code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create table stad_ing (
    	num_rec	 	number(5) constraint fk_stade_ing_rec references recette(num_rec) not null ,
    	num_stad 	number(2) constraint fk_stade_ing_stade references stade(num_stad) not null,
    	num_ing		number(5) constraint fk_stade_ing_ing references ingredient(num_ing) not null,
    	constraint pk_stade primary key (num_rec,num_stad,num_ing)  
    );
    Qd j'éxécute cette commande, Toad m'affiche l'erreur suivante :

    " pas de correspondance de clé primaire ou unique pr cette liste de colonne"

    sur cette partie de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    references stade(num_stad)
    Pourriez-vous m'aider ?

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut Re: Problemes de clé primaire
    Citation Envoyé par Dark_Setsuna
    J'aurais voulu savoir si il était possible de créer une table avec une clé primaire de 3 champs.
    Aucun problème

    Citation Envoyé par Dark_Setsuna
    pas de correspondance de clé primaire ou unique pr cette liste de colonne
    merci d'envoyer le numéro de l'erreur qui permet de faire des recherches plus facilement

    Apparemment, tu as une valeur dans num_stad qui n'existe pas dans stade... mais c'est bizarre que tu rencontres l'erreur sur le create table

  3. #3
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Est-ce que par hasard ça ne viendrait pas du fait que dans la table stade, la colonne num_stad n'est ni clef primaire, ni indexée unique ?

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    c'est une idée

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Voici le numéro de l'erreur que je rencontre : ORA-02270

    J'ai déclaré ma ta stade comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create table stade (
    	num_rec	 	number(5) constraint fk_stade_rec references recette(num_rec) not null ,
    	num_stad 	number(2) not null,
    	cod_action	varchar2(3) constraint fk_stade_action references action(cod_action) not null,
    	tps_stad		number(3)  not null,
    	constraint pk_stade primary key (num_rec,num_stad)  
    );
    num_stad fait partie de la clé primaire ...

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Que donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select constraint_name,constraint_type,table_name,VIEW_RELATED
    from dba_constraints where table_name='STADE';

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Voila le résultat obtenu :


    PK_STADE | P | STADE
    FK_STADE_REC | R | STADE
    FK_STADE_ACTION | R | STADE

    et tout un tas de contraintes SYS_00309x ( x = 6 -> 9 ), elles sont de type C.

    Aucune info n'apparait dans Related

  8. #8
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Citation Envoyé par Dark_Setsuna
    Voici le numéro de l'erreur que je rencontre : ORA-02270

    J'ai déclaré ma ta stade comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create table stade (
    	num_rec	 	number(5) constraint fk_stade_rec references recette(num_rec) not null ,
    	num_stad 	number(2) not null,
    	cod_action	varchar2(3) constraint fk_stade_action references action(cod_action) not null,
    	tps_stad		number(3)  not null,
    	[color=darkred]constraint pk_stade primary key (num_rec,num_stad)  
    );[/color]
    num_stad fait partie de la clé primaire ...
    Ta clé primaire sur STADE est (num_rec, num_stade) donc quand tu références la table STADE c'est cette clé composite qu'il faut que tu références !


    Laly.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Pourrais-tu m'éclairer sur la syntaxe a employer ?

    J'ai testé ceci mais ca ne fonctionne pas ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pk_concat 	number(7) constraint nom_contrainte references stade(num_rec,num_stad) not null
    Voici l'erreur que toad me renvoie :
    "ORA-02256: le nombre de colonnes de référence doit correspondre au nombre de colonnes référencées"

    Comme num_rec est un number(5) et num_stad est un number(2) je pensais que mettre un number(7) fonctionnerait ...

  10. #10
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Tu peux faire comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create table STAD_ING ( 
       num_rec     number(5) constraint fk_stade_ing_rec references recette(num_rec) not null , 
       num_stad    number(2) not null, 
       num_ing     number(5) constraint fk_stade_ing_ing references ingredient(num_ing) not null, 
       constraint pk_stade primary key (num_rec,num_stad,num_ing),
       constraint fk_stade_ing_stade foreign key (num_rec, num_stad) references stade(num_rec, num_stad)
    );

    Laly.

  11. #11
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Comme la contrainte porte sur deux colonnes, tu ne peux pas la mettre au niveau d'une colonne.


    Laly.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Points : 35
    Points
    35
    Par défaut
    create table stad_ing (
    num_rec number(5),
    num_stad number(2),
    num_ing number(5) constraint fk_stade_ing_ing references ingredient(num_ing) not null,
    constraint pk_stade primary key (num_rec,num_stad,num_ing)
    constraint fk_stade_ing_stade foreign key (num_rec,num_stad) references stade (num_rec,num_stad) not null
    );

    je suis désolé j'ai un pti doute sur la déclaration de la fk, mais vérifie si besoin dans l'aide. par contre, tu dois comprendre que même s'il y a deux colonnes, tu n'as qu'UNE clé étrangère : c'est là ton soucis !!!

    Bon courage

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Merci a tous pour votre aide !

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

Discussions similaires

  1. probleme 3 clés primaires
    Par dahno_fr dans le forum Hibernate
    Réponses: 1
    Dernier message: 14/02/2007, 11h39
  2. probleme de cle primaire
    Par intic dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/10/2006, 09h49
  3. Probleme de clé primaire
    Par djbenvik dans le forum Oracle
    Réponses: 5
    Dernier message: 24/03/2006, 00h15
  4. [Hibernate JBoss] Probleme de clé primaire
    Par jmartell dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 08/01/2006, 16h12
  5. probleme de clé primaire ?
    Par donny dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 24/05/2005, 10h58

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