2015-12-11 15 views
0
create database blood_bank; 
use blood_bank; 
create table Employee(
    Emp_id integer not null, 
    Emp_name char(20) not null, 
    phone integer, 
    address char(20), 
    constraint primary key(Emp_id) 
); 

create table WorkInStorage(
    Emp_id integer not null, 
    since date not null, 
    emp_salary integer, 
    constraint primary key(Emp_id), 
    constraint foreign key(Emp_id) references Employee(Emp_id) on delete cascade 
); 

create table Reports_To(
    supervisor_id integer not null, 
    subordinate_id integer not null, 
    constraint primary key (supervisor_id,subordinate_id), 
    constraint foreign key(subordinate_id) references Employee(Emp_id), 
    constraint foreign key(supervisor_id) references Employee(Emp_id) 
); 

create table Nurse(
    nurse_salary integer , 
    Emp_id integer not null, 
    constraint primary key(Emp_id), 
    constraint foreign key(Emp_id) references Employee(Emp_id) on delete cascade 
); 

create table Receptionist(
    Receptionist_salaray integer, 
    Emp_id integer not null, 
    constraint primary key(Emp_id), 
    constraint foreign key(Emp_id) references Employee(Emp_id) on delete cascade 

); 

create table donor(
    donor_id integer not null, 
    donor_address char(20), 
    birthdate date, 
    donor_name char(20), 
    donor_gender char(5), 
    donor_phone integer, 
    Emp_id integer not null, 
    blood_id integer not null, 
    constraint primary key(donor_id), 
    constraint foreign key(Emp_id)references Nurse(Emp_id) on delete cascade , 
    constraint foreign key(Emp_id)references Receptionist(Emp_id) on delete cascade , 
    constraint foreign key(blood_id)references Blood(blood_id)on delete cascade 

); 
create table Checks(
    isQualified boolean not null, 
    donor_id integer, 
    donor_address char(20), 
    birthdate date, 
    donor_name char(20), 
    donor_gender boolean, 
    donor_phone integer, 
    Emp_id integer not null, 
    constraint primary key(donor_id), 
    constraint foreign key(Emp_id) references Nurse(Emp_id) 
); 

當我嘗試執行此查詢時,它說它無法在donor表中添加外鍵。錯誤1215,無法添加外鍵約束

create table donor( donor_id integer not null, donor_address char(20), birthdate date, donor_name char(20), donor_gender char(5), donor_phone integer, Emp_id integer not null, blood_id integer not null, constraint primary key(donor_id), constraint foreign key(Emp_id)references Nurse(Emp_id) on delete cascade , constraint foreign key(Emp_id)references Receptionist(Emp_id) on delete cascade , constraint foreign key(blood_id)references Blood(blood_id)on delete cascade )  

錯誤代碼:1215無法添加外鍵約束

回答

1

如果你問在DB不存在運行該腳本,那麼你得到錯誤1215,因爲你的表blood不存在。

對於測試證明,如果我執行

create table blood 
( blood_id int auto_increment primary key 
); 

,然後嘗試表donor的創作,它的工作原理。

0

試試這個:

create table donor(
    donor_id integer not null, 
    donor_address char(20), 
    birthdate date, 
    donor_name char(20), 
    donor_gender char(5), 
    donor_phone integer, 
    Emp_id integer not null, 
    blood_id integer not null, 
    primary key(donor_id,Emp_id,blood_id), 
    foreign key(Emp_id)references Nurse(Emp_id) on delete cascade, 
    foreign key(Emp_id)references Receptionist(Emp_id) on delete cascade, 
    foreign key(blood_id)references Blood(blood_id)on delete cascade) 
+0

它沒有工作! ,請提供其他解決方案嗎? –

相關問題