2011-06-07 3 views
0

Je reçois l'erreur « Nombre de référence colonnes diffère clé étrangère de nombre de colonnes référencées, table « StudentGrade » » lorsque vous essayez d'exécuter le script SQL suivantScript SQL clé étrangère Erreur

CREATE TABLE StudentGrade 

(

    StudentID INT NOT NULL 
     CONSTRAINT FK_SG_StudentID FOREIGN KEY (StudentID) 
     REFERENCES Student(StudentID), 
    ClassID VARCHAR (6) NOT NULL 
     CONSTRAINT FK_Class FOREIGN KEY (ClassID, CourseID) 
     REFERENCES Class(ClassID), 
    CourseID VARCHAR (64) NOT NULL 
     CONSTRAINT FK_Course FOREIGN KEY (CourseID) 
     REFERENCES Course(CourseID), 
    FacultyID INT NOT NULL 
     CONSTRAINT FK_Faculty FOREIGN KEY (FacultyID) 
     REFERENCES Faculty(FacultyID), 
    Grade NUMERIC NULL, 
    CONSTRAINT PK_StudentID PRIMARY KEY (StudentID, ClassID, CourseID, FacultyID) 

) 

I Je sais qu'il y a quelque chose que je fais mal avec les clés étrangères, bien que je ne trouve nulle part où il explique comment utiliser les clés étrangères et les clés composées ensemble. Toute aide serait grandement appréciée. Merci beaucoup!

Répondre

1

changer votre deuxième clé étrangère de

CONSTRAINT FK_Class FOREIGN KEY (ClassID, CourseID) 

à

CONSTRAINT FK_Class FOREIGN KEY (ClassID) 

Dans FK_Class vous référencez les colonnes StudentGrade.ClassID et StudentGrade.CourseID en une seule Class.ClassID et cela ne peut pas fonctionner.

Votre FK_Course fait déjà référence CourseID, donc vous pouvez simplement supprimer CourseID de FK_Class comme je l'ai dit plus haut.

Modifier

Ajouter CourseID à votre définition de FK_Class comme

CONSTRAINT FK_Class FOREIGN KEY (ClassID, CourseID) 
     REFERENCES Class(ClassID, CourseID) 
+0

Merci pour votre réponse! Malheureusement, cela me donne juste une autre erreur Il n'y a pas de clé primaire ou candidate dans la table référencée 'Class' qui corresponde à la liste de colonnes de référence dans la clé étrangère 'FK_Class'. Peut-être que cela aiderait si je montrais mon code pour la classe Class. CREATE TABLE Classe ( \t ClassID VARCHAR (6) NOT NULL \t \t CONTRAINTE PK_ClassID PRIMARY KEY (CLASSID CourseID), \t CourseID VARCHAR (64) NOT NULL \t \t CONTRAINTE FK_CourseID FOREIGN KEY (CourseID) \t \t \t RÉFÉRENCES Cours (courseid), \t StartDate date de NULL, \t EndDate date NULL, \t Localisation VARCHAR (64) NULL, ) – Zombian

+0

@Zombi un, s'il vous plaît vérifier maintenant –