我在代码中记下了主键和外键,但它显示错误:
外键约束形成错误
有人可以帮我解决我的问题吗?
这就是我写的:
USE sgschool;
CREATE TABLE StudentSubject(studentno INT(5) NOT NULL,
subjectID INT(10) NOT NULL,
CONSTRAINT schSubjectIDFK FOREIGN KEY(SubjectID) REFERENCES Subjects (subjectID),
CONSTRAINT schStudentNoFK FOREIGN KEY(studentNo) REFERENCES student(StudentID),
PRIMARY KEY(studentNo,subjectID));
答案 0 :(得分:0)
将约束作为表创建的一部分包含在内时,您不需要包含约束列的名称,因为约束是列定义的一部分。
试试这个:
studentno INT (5) NOT NULL CONSTRAINT schStudentNoFK FOREIGN KEY REFERENCES student(StudentID),
subjectID INT (10) NOT NULL CONSTRAINT schSubjectIDFK FOREIGN KEY REFERENCES Subjects(subjectID),
如果在创建表之后添加约束,则需要告诉SQL要添加约束的列,但是再次,当您使用表定义包含约束时,这不是必需的。
另一方面,尝试与套管和复数更加一致。你有学生(StudentID)和科目(subjectID)。使它们都是单数或使它们全部复数;使它们全部为小写,大写或PascalCase,但不要在同一解决方案中混合使用它们。那些微小的细微差别可能会让你后来悲伤。