I've got 3 schemas, Course, Takes, Instructs.
Under course, I have a course_id as primary key which I want to reference the attribute course_id in both takes and instructs. How can I do that?
Currently this is my course schema where I'm only referencing 1 other table
CREATE TABLE Course (
course_id int PRIMARY KEY REFERENCES Takes (course_id),
)
CodePudding user response:
Are you sure you don't have it backwards?
Takes
references Course
.
Instructs
references Course
Would be a more normal arrangement.
You can do ADD CONSTRAINT
after table creation if that's truly your model.
CodePudding user response:
As far as I understood, you have the Course
table with the primary key course_id
. Then, there are tables Takes
and Instructs
and each of them has to reference the Course
table (have course_id
as a foreign key). In your query, Course
references Takes
but it has to be vice versa.
In case none of those tables exist you need to create them as follows:
CREATE TABLE Course (course_id INT PRIMARY KEY);
CREATE TABLE Takes (take_id INT PRIMARY KEY, course_id INT,
FOREIGN KEY (course_id) REFERENCES Course(course_id));
CREATE TABLE Instructs (instruct_id INT PRIMARY KEY, course_id INT,
FOREIGN KEY (course_id) REFERENCES Course(course_id));
In case the tables Takes
and Instructs
already exist you should modify them with ALTER TABLE
:
ALTER TABLE Takes
ADD CONSTRAINT fk_course
FOREIGN KEY (course_id)
REFERENCES Course(course_id);
And the same for the Instructs
table.