2017-10-04 35 views
-2

//大學DDL語句我有univarsity sechema提及下面,現在我想添加新表,但它顯示erroe?幫我

create table classroom 
    (building  varchar(15), 
    room_number  varchar(7), 
    capacity  numeric(4,0), 
    primary key (building, room_number) 
    ); 

create table department 
    (dept_name varchar(20), 
    building varchar(15), 
    budget numeric(12,2) check (budget > 0), 
    primary key (dept_name) 
    ); 

create table course 
    (course_id  varchar(8), 
    title   varchar(50), 
    dept_name  varchar(20), 
    credits  numeric(2,0) check (credits > 0), 
    primary key (course_id), 
    foreign key (dept_name) references department 
     on delete set null 
    ); 

create table instructor 
    (ID   varchar(5), 
    name   varchar(20) not null, 
    dept_name  varchar(20), 
    salary   numeric(8,2) check (salary > 29000), 
    primary key (ID), 
    foreign key (dept_name) references department 
     on delete set null 
    ); 

create table section 
    (course_id  varchar(8), 
     sec_id   varchar(8), 
    semester  varchar(6) 
     check (semester in ('Fall', 'Winter', 'Spring', 'Summer')), 
    year   numeric(4,0) check (year > 1701 and year < 2100), 
    building  varchar(15), 
    room_number  varchar(7), 
    time_slot_id  varchar(4), 
    primary key (course_id, sec_id, semester, year), 
    foreign key (course_id) references course 
     on delete cascade, 
    foreign key (building, room_number) references classroom 
     on delete set null 
    ); 

create table teaches 
    (ID   varchar(5), 
    course_id  varchar(8), 
    sec_id   varchar(8), 
    semester  varchar(6), 
    year   numeric(4,0), 
    primary key (ID, course_id, sec_id, semester, year), 
    foreign key (course_id,sec_id, semester, year) references section 
     on delete cascade, 
    foreign key (ID) references instructor 
     on delete cascade 
    ); 

create table student 
    (ID   varchar(5), 
    name   varchar(20) not null, 
    dept_name  varchar(20), 
    tot_cred  numeric(3,0) check (tot_cred >= 0), 
    primary key (ID), 
    foreign key (dept_name) references department 
     on delete set null 
    ); 

create table takes 
    (ID   varchar(5), 
    course_id  varchar(8), 
    sec_id   varchar(8), 
    semester  varchar(6), 
    year   numeric(4,0), 
    grade    varchar(2), 
    primary key (ID, course_id, sec_id, semester, year), 
    foreign key (course_id,sec_id, semester, year) references section 
     on delete cascade, 
    foreign key (ID) references student 
     on delete cascade 
    ); 

create table advisor 
    (s_ID   varchar(5), 
    i_ID   varchar(5), 
    primary key (s_ID), 
    foreign key (i_ID) references instructor (ID) 
     on delete set null, 
    foreign key (s_ID) references student (ID) 
     on delete cascade 
    ); 

create table time_slot 
    (time_slot_id  varchar(4), 
    day   varchar(1), 
    start_hr  numeric(2) check (start_hr >= 0 and start_hr < 24), 
    start_min  numeric(2) check (start_min >= 0 and start_min < 60), 
    end_hr   numeric(2) check (end_hr >= 0 and end_hr < 24), 
    end_min  numeric(2) check (end_min >= 0 and end_min < 60), 
    primary key (time_slot_id, day, start_hr, start_min) 
    ); 

create table prereq 
    (course_id  varchar(8), 
    prereq_id  varchar(8), 
    primary key (course_id, prereq_id), 
    foreign key (course_id) references course 
     on delete cascade, 
    foreign key (prereq_id) references course 
    ); 

我的DML語句:

create table assistant 
    (ID varchar(5), 
    course_id varchar(8), 
    sec_id varchar(8), 
    semester varchar(6), 
    year numeric(4,0), 
    primary key (ID, course_id, sec_id, semester, year), 
    foreign key (course_id,sec_id, semester, year) references  
    section(course_id,sec_id, semester, year)on delete cascade, 
    foreign key (ID) references student(ID)on delete cascade); 

告訴我什麼是錯誤的,我DML語句? 它顯示的錯誤爲「ERROR 1215(HY000):無法添加外鍵約束」

+0

這是一個常見問題解答。你會被低估,因爲你沒有表現出任何努力,你的問題是沒有用的。請閱讀downvote箭頭/三角形mouseover文本和[問]。例如谷歌你的錯誤信息。例如谷歌'mysql有關外鍵錯誤的更多信息',並閱讀很多命中。例如搜索和閱讀官方文檔。例如閱讀[mcve]並採取行動。 PS你甚至沒有努力拼寫正確的名詞。 – philipxy

+0

[MySQL錯誤1215:無法添加外鍵約束]的可能重複(https://stackoverflow.com/questions/16969060/mysql-error-1215-cannot-add-foreign-key-constraint) – philipxy

回答

0

你不要需要把列名的表的名稱後,您引用:

create table assistant 
     (ID varchar(5), 
     course_id varchar(8), 
     sec_id varchar(8), 
     semester varchar(6), 
     year numeric(4,0), 
     primary key (ID, course_id, sec_id, semester, year), 
     foreign key (course_id,sec_id, semester, year) references  
      section on delete cascade, 
     foreign key (ID) references student on delete cascade); 

什麼你有錯的是用粗體部分:

foreign key (course_id,sec_id, semester, year) references  
    section 

(COURSE_ID,sec_id,學期一年)

on delete cascade 
相關問題