【发布时间】:2019-06-14 11:39:50
【问题描述】:
我是 SQL 新手,但我在 CourseEnrollments 表中的外键方面遇到了问题。
我不断收到错误报告 - ORA-00907: 缺少右括号 00907. 00000 - "缺少右括号 *原因: *行动:
似乎所有逗号和括号都已到位。
Create Table Students
(
StudentID INT NOT NULL,
Lastname VARCHAR2(25),
Firstname VARCHAR2(20),
Email VARCHAR2(40),
Enrollmentdate DATE,
CONSTRAINT student_pk PRIMARY KEY (StudentID)
);
/* This is the creation of the Students table */
Create Table Faculty
(
FacultyID INT NOT NULL,
Lastname VARCHAR2(25),
Firstname VARCHAR2(20),
Email VARCHAR2(40),
Hiredate DATE,
CONSTRAINT faculty_pk PRIMARY KEY (FacultyID)
);
/* This is the creation of the Faculty table */
Create Table Courses
(
CourseID INT NOT NULL,
"Subject (e.g. SDEV)" VARCHAR2(20),
"Catalognbr (e.g. 350)" NUMBER,
"Title (e.g. Database Security)" VARCHAR2(40),
CONSTRAINT course_pk PRIMARY KEY (CourseID)
);
/* This is the creation of the Courses table */
Create Table CourseEnrollments
(
EnrollmentID INT NOT NULL,
CONSTRAINT fk_Students
FOREIGN KEY (StudentID)
REFERENCES Students(StudentID)
CONSTRAINT fk_Faculty
FOREIGN KEY (FacultyID)
REFERENCES Faculty(FacultyID)
CONSTRAINT fk_Courses
FOREIGN KEY (CourseID)
REFERENCES Courses(CourseID)
CONSTRAINT enrollment_pk PRIMARY KEY (EnrollmentID)
);
【问题讨论】:
-
你确定用引号括起来的列名应该有括号而不是反斜杠吗?请检查一下。这可能是个问题,我不确定。
-
我强烈建议您考虑重新创建 COURSES 表。不要使用双引号,也不要将列解释放入其名称中。你是否知道 - 每次你想从那个表中选择一些东西 - 你必须写 exactly
select "Title (e.g Database security)" from COURSES>>> 并且它会失败,因为我没有在“例如”中加一个点并且没有在“安全”中使用大写“S”?这样的桌子是一场噩梦。您可以将 COMMENT 用于任何列,例如comment on column courses.title is 'e.g. database security';