【发布时间】:2015-10-07 01:34:28
【问题描述】:
无法找出这些错误。在这方面工作太久了,请帮忙,我已经坚持了大约 4 个小时。
CREATE TABLE Student
(
student_id varchar(25),
student_name varchar(25),
major varchar(10),
gpa number(3,2),
PRIMARY KEY(student_id)
);
CREATE TABLE Class
(
schedule_num varchar(25),
semester varchar(25),
course_name varchar(25),
course_number varchar(25),
credit varchar(4),
department varchar(25),
meeting_time varchar(25),
meeting_place varchar(25),
class_size_limit varchar (25),
PRIMARY KEY(schedule_num,semester)
);
CREATE TABLE Enrolls
(
semester varchar(25),
grade varchar(2),
PRIMARY KEY(student_id,schedule_num,semester),
student_id varchar(25) FOREIGN KEY REFERENCES Student(student_id),
schedule_num varchar(25) FOREIGN KEY REFERENCES Class(schedule_num),
);
2 个错误---
1) 错误 - 缺少右括号第 6 行
2) ERROR -- 表或视图不存在第 1 行
【问题讨论】:
-
我假设您在定义
enrolls表时遇到了错误。主键定义看起来不合理——键的三个组成部分实际上都不是表中的列。你也不会使用FOREIGN KEY REFERENCES,语法就是REFERENCES。我希望您想使用varchar2而不是varchar但这不会导致您的问题。 -
所以我们根本不需要外键?你说的看起来不明智是什么意思?
-
您尝试在
enrolls上定义复合主键。该复合键由三列组成 -student_id、schedule_num和semester。student_id不是表中的列。schedule_num不是表中的列。主键包含不存在的列是没有意义的。要么你想在你的表中包含这些列(这看起来很明智),要么你想以不同的方式定义键。定义内联外键约束的语法不包括字面词foreign key,只包括x references tbl(x)。
标签: sql oracle foreign-keys primary-key