簡體   English   中英

錯誤1215,無法添加外鍵約束

[英]Error 1215, cannot add foreign key constraint

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表中添加外鍵。

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。無法添加外鍵約束

如果您要求在該數據庫不存在的地方運行該腳本,那么您將收到錯誤1215,因為您的表blood不存在。

為了證明這一點,如果我執行

create table blood
(   blood_id int auto_increment primary key
);

然后嘗試創建表donor ,它可以正常工作。

試試這個:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM