问题描述
create database stmikglobal;
use stmikglobal;
create table depart(
dept_name varchar(20) primary key,building varchar(20),budget float(15,2)
);
create table instructor(
instruc_id int not null auto_increment primary key,ka_dept_name varchar(20),ins_name varchar(30) not null,salary int,foreign key (ka_dept_name) references depart (dept_name)
);
create table student(
id_stu int not null auto_increment primary key,ka_dept_name varchar (20),ka_ins_name varchar(30),full_name varchar(35),total_credits int,foreign key (ka_dept_name) references depart(dept_name),foreign key (ka_ins_name) references instructor(ins_name)
);
为什么我要在表部分执行文件有问题?
解决方法
您应该通过其主键(instructor
)来引用instruc_id
表,而不要通过其他列(在这里,您使用ins_name
)来引用。因此,如下更改列名,数据类型和外键声明:
create table student(
id_stu int not null auto_increment primary key,ka_dept_name varchar (20),ka_instruc_id int,full_name varchar(35),total_credits int,foreign key (ka_dept_name) references depart(dept_name),foreign key (ka_instruc_id) references instructor(instruc_id)
);