gpt4 book ai didi

mysql - 创建表时无法添加外键约束

转载 作者:行者123 更新时间:2023-11-29 07:18:32 24 4
gpt4 key购买 nike

我是 SQL 新手。

当我尝试创建外键时出现此错误:

cannot add foreign key constraint

当我尝试创建 ORDERS 表时。这是我的代码:

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)
);

我将订单(我遇到问题的地方)放在不同的行上,以便您更容易阅读。

我在这里搜索答案,但没有找到任何可以回答我的问题的具体内容。

有人知道问题出在哪里吗?谢谢!

最佳答案

问题在于您尝试创建与 WORKERSCUSTOMERS 表中不存在的字段的 FOREIGN KEY 关系设置为主键

FOREIGN KEY 需要指向PRIMARY KEY。将您的创建脚本更改为以下内容:

create table WORKERS(w_id varchar(4) primary key, w_name varchar(20) not null, telephone varchar(12), e_mail varchar(35) unique);
create table CUSTOMERS(customer_id varchar(4) primary key, customer_name varchar(20) not null, telephone varchar(12), e_mail varchar(35) unique, credit bool);

不过,请注意。我建议不要使用 VARCHAR (4) 作为 PRIMARY KEY 字段。我建议改用INT AUTO_INCRMENT

关于mysql - 创建表时无法添加外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com