SQL脚本外键错误

0 人关注

我得到的错误是 "外键中的引用列数与引用列数不同,表'StudentGrade'",当试图执行以下SQL脚本时,得到了错误的提示

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)

我知道我在外键上做错了什么,但我找不到任何地方解释如何同时使用外键和复合键。 如果有任何帮助,我将不胜感激。 非常感谢您!

sql
sql-server-2008
foreign-keys
Zombian
Zombian
发布于 2011-06-07
1 个回答
Jose Rui Santos
Jose Rui Santos
发布于 2011-06-07
已采纳
0 人赞同

将你的第二个外键从

CONSTRAINT FK_Class FOREIGN KEY (ClassID, CourseID)
CONSTRAINT FK_Class FOREIGN KEY (ClassID)

FK_Class中,你将StudentGrade.ClassIDStudentGrade.CourseID这两列引用到一个Class.ClassID中,这是不可能的。

你的FK_Course已经引用了CourseID,所以你可以简单地从FK_Class中删除CourseID,如我上面所说。