Ich bin neu bei SQL.mysql - kann keine Fremdschlüsseleinschränkung beim Erstellen einer Tabelle hinzufügen
Ich bekomme diese Fehlermeldung, wenn ich versuche Fremdschlüssel zu erstellen:
cannot add foreign key constraint
, wenn ich versuche, die ORDERS-Tabelle zu erstellen. hier ist mein Code:
drop database if exists Company;
create database Company;
use Company;
create table WORKERS(w_id varchar(4), w_name varchar(20) not null, telephone varchar(12), e_mail varchar(35) unique);
create table CUSTOMERS(customer_id varchar(4), customer_name varchar(20) not null, telephone varchar(12), e_mail varchar(35) unique, credit bool);
create table WAREHOUSE(m_id int unsigned primary key, describes varchar(20) not null, fl char(1));
create table ITEM(p_id int(4) unsigned primary key, p_name varchar(15) not null, p_price float not null);
create table INVENTORY(in_id int auto_increment primary key, m_id int unsigned not null, p_id int(4) unsigned not null, amount int not null,
foreign key (m_id) references WAREHOUSE(m_id),
foreign key (p_id) references ITEM(p_id)
);
create table ORDERS(o_id int auto_increment primary key, customer_id varchar(4),
p_id int(4) unsigned, w_id varchar(4), amount int unsigned not null,
date_of_order date not null,
foreign key (p_id) references ITEM(p_id),
foreign key (w_id) references WORKERS(w_id),
foreign key (customer_id) references CUSTOMERS(customer_id)
);
ich die ORDERS setzen (wo ich das Problem haben) auf verschiedenen Linien zu erleichtern Ihnen zu lesen.
Ich suche hier nach einer Antwort, aber habe nichts bestimmtes gefunden, das meine Frage beantwortet.
hat jemand eine Idee, was das Problem ist? Danke!
Wenn Sie einen Fremdschlüssel zu erstellen, muss die referenzierte Spalte ein Primärschlüssel (oder zumindest ein eindeutiger Schlüssel abhängig von der SQL sein, die Sie verwenden). Dies ist bei Ihrer Workers-Tabelle nicht der Fall. –