我有3个表格,students
,courses
,enroll
关系为“学生注册课程”
我创建了students
表,其中sid
为主键
我创建了courses
表,其中cid
为主键
现在我必须创建enroll
表,我按如下方式执行,但它显示关键字references
的错误,错误是什么?
create table enroll(
grade char(2),
sid int not null,
cid int not null,
primary key(sid,cid),
foreign key cid references courses on delete cascade,
foreign key sid references students on delete cascade
);
答案 0 :(得分:3)
您必须指定您在外表中引用的字段,并且两组关键字段也必须加上()
括号。
foreign key (cid) references courses (name_of_foreign_field_here) on delete cascade,
^ ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
答案 1 :(得分:0)
简单的建议
对于多对多关系表,您必须创建另一个关系表,并获取两个表的PK ID并保存在此关系表中
而对于一对多关系表,在多表的属性中为一个表的PK添加一个属性,并始终将它们链接为
答案 2 :(得分:0)
我认为你需要将cid和sid放在括号中。这是一个示例代码试一试,让我们知道您的结果。 请确保参考文献的大小和数据类型,即课程和学生的主要密钥以及注册的主要密钥是相同的。
CREATE TABLE `enroll` (
`sid` INT(10) NOT NULL,
`cid` INT(10) NOT NULL,
PRIMARY KEY (`sid`, `cid`),
INDEX `FK_enroll_course` (`cid`),
CONSTRAINT `FK_enroll_course` FOREIGN KEY (`cid`) REFERENCES `course` (`id`) ON DELETE CASCADE,
CONSTRAINT `FK_enroll_student` FOREIGN KEY (`sid`) REFERENCES `student` (`id`) ON DELETE CASCADE
)