create table teach_enroll( instructor_id varchar(64) not null, class_id varchar(64)not null, course_id varchar(64)not null, student_id varchar(64) not null, foreign key (instructor_id) references instructor(id), foreign key (class_id) references class(id), foreign key(course_id)references course_type(id), foreign key (student_id)references student(id), CONSTRAINT ENROLL_ID primary key (class_id,course_id,student_id) ); select * from teach_enroll;
我試圖將我的主鍵列命名為ENROLL_ID,但當我查詢select * fromteacher_enroll 時,約束關鍵字沒有幫助,我在單獨的列中只得到了coach_id、class_id、course_id、student_id,但我看不到主鍵列: )
P粉0154020132023-09-12 00:18:45
您的主鍵由三 (3) 列組成,而不是單一列,因為這是您定義它的方式。這意味著這三列的組合對於表中的每一行都必須是唯一的,儘管定義為鍵的任何給定列可能不是唯一的。您不能將單一名稱套用至三列。
這表示您的外鍵約束將命名所有 3 列。假設兩個表中的列名相同,則:
CONSTRAINT FOREIGN KEY (class_id,course_id,student_id) REFERENCES teach_enroll(class_id,course_id,student_id)