2017-10-04 27 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 
相关问题