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
);
sql如上,前两个表能够创建成功,但是创建course表的时候提示error1005,网上查过可能有三点原因
1.外键和被引用外键类型不一样,比如integer和double 
2.找不到要被引用的列 
3.表的字符编码不一样  对照一下,外键类型一样,都是varchar(20),被引用的列也存在啊,第三点不知道怎么回事
我也搞不清问题出在哪了,求解答!!

解决方案 »

  1.   

    show create table department;贴出来看一下。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(dept_name )
    on delete set null
    );
      

  2.   

    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(dept_name)
    on delete set null
    );