Oracle: Probleme création de table

Oracle: Probleme création de table - SQL/NoSQL - Programmation

Marsh Posté le 19-01-2008 à 13:54:57    

Bonjour a tous, voilà un nouveau probleme se pose à moi, c'est un petit amas de code alors je vais tout vous détailler pour plus de comprehension.
Voila je tente de créer la table emprunts suivante:
 
CREATE TABLE emprunts
 (
    livre NUMBER(6) CONSTRAINT fk_emprunts_to_exemplaires REFERENCES exemplaires(numero),
    exemplaire NUMBER(6) CONSTRAINT fk_emprunts_to_exemplaires REFERENCES exemplaires(numero_exemplaire),
    membre NUMBER(6) CONSTRAINT fk_emprunts_to_membres REFERENCES membres(numero),
    emprunt DATE,
    retour DATE,
    CONSTRAINT pk_emprunts PRIMARY KEY (livre, exemplaire, membre),
    CONSTRAINT fk_emprunts FOREIGN KEY (livre, exemplaire) REFERENCES exemplaires (numero, numero_exemplaire),
    CONSTRAINT fk_emprunts FOREIGN KEY (membre) REFERENCES membres (numero)
 );

SQL m'affiche le message d'erreur suivant :
ERREUR à la ligne 1 :
ORA-02270: pas de correspondance de clé primaire ou unique pour cette liste de
colonnes

Les tables de références exemplaires et membres sont les suivantes :
 
 
CREATE TABLE exemplaires
 (  
    numero NUMBER(6) NOT NULL CONSTRAINT pk_exemplaires PRIMARY KEY,
    numero_exemplaire NUMBER(6) NOT NULL,
    aquisition DATE
 );

 
 
 
CREATE TABLE membres  
 (  
   numero NUMBER(6) CONSTRAINT pk_membres PRIMARY KEY,
   nom VARCHAR2(15) NOT NULL,
   prenom VARCHAR2(15),
   date_adhesion DATE
 );

 
Merci de bien vouloir m'aider s'il-vous-plait, je ne comprend pas d'où peut venir cette érreur. Merci.

Reply

Marsh Posté le 19-01-2008 à 13:54:57   

Reply

Marsh Posté le 21-01-2008 à 10:38:41    

euh...
 
1/ pourquoi t'as 36 fois les mêmes noms pour tes contraintes ?
2/ pourquoi tes foreign key ne pointent pas QUE sur la PK de la table liée ?
3/ évite de créer des contraintes au moment de la création de la table. crée toujours tes contraintes à coups de ALTER TABLE, ça permet au moins de savoir laquelle chie dans la colle.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed