Ошибка внешнего ключа сценария SQL - PullRequest
0 голосов
/ 07 июня 2011

Я получаю сообщение об ошибке «Количество ссылочных столбцов во внешнем ключе отличается от количества ссылочных столбцов, таблица« 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)

)

Я знаю, что существуетчто-то я делаю неправильно с внешними ключами, хотя нигде не могу найти, где объясняется, как использовать внешние ключи и составные ключи вместе.Любая помощь будет принята с благодарностью.Большое вам спасибо!

1 Ответ

1 голос
/ 07 июня 2011

измените свой второй внешний ключ с

CONSTRAINT FK_Class FOREIGN KEY (ClassID, CourseID)

до

CONSTRAINT FK_Class FOREIGN KEY (ClassID)

В FK_Class вы ссылаетесь на столбцы StudentGrade.ClassID и StudentGrade.CourseID в один Class.ClassID, и это не может работать.

Ваш FK_Course уже ссылается на CourseID, поэтому вы можете просто удалить CourseID из FK_Class, как я уже говорил выше.

Редактировать

Добавьте CourseID к вашему определению FK_Class как

CONSTRAINT FK_Class FOREIGN KEY (ClassID, CourseID)
        REFERENCES Class(ClassID, CourseID)
...