我创建了一个表供应商n MySQL 供应商说明:
Supplier_ID varchar(5) NOT NULL
Supplier_Name varchar(30)
Supplier_Address varchar(50)
Supplier_Contact int(12)
Supplier_Email varchar(30)
PRIMARY KEY(Supplier_ID)
现在, 我想创建表产品 产品说明将是:
Product_ID varchar(5) NOT NULL
Product_Name varchar(30)
Supp_Name varchar(30)
Product_Category varchar(20)
Unit_Price int(11)
Unit_In_Stock int(11)
PRIMARY KEY(Product_ID)
FOREIGN KEY(Supp_Name) REFERENCES Suppliers(Supplier_Name)
但是当我尝试创建产品表时,它会出现错误:
ERROR 1005(HY000):无法创建表'csm.products'(错误:150)
CSM是一个数据库名称。
答案 0 :(得分:1)
正如@juergend在评论中指出的那样,你应该引用外键中的Supplier_ID
字段,而不是Supplier_Name
,你也应该用{{Supplier_Name
替换Supplier_ID
。您products
表中的1}}字段。我还会将供应商ID的数据类型更改为整数,可能是自动递增的。
原因是
Si,我会按如下方式更改products
表:
Product_ID varchar(5) NOT NULL,
Product_Name varchar(30),
Supplier_ID int NOT NULL,
Product_Category varchar(20),
Unit_Price int(11),
Unit_In_Stock int(11),
PRIMARY KEY(Product_ID),
FOREIGN KEY(Supplier_ID) REFERENCES Suppliers(Supplier_iD)
supplier
表:
Supplier_ID int NOT NULL [auto_increment]
Supplier_Name varchar(30)
Supplier_Address varchar(50)
Supplier_Contact int(12)
Supplier_Email varchar(30)
PRIMARY KEY(Supplier_ID)
答案 1 :(得分:0)
试试这个:
Product_ID varchar(5) NOT NULL,
Product_Name varchar(30),
Supplier_ID varchar(5) NOT NULL,
Product_Category varchar(20),
Unit_Price int(11),
Unit_In_Stock int(11),
PRIMARY KEY(Product_ID),
FOREIGN KEY(Supplier_ID) REFERENCES Suppliers(Supplier_iD)
答案 2 :(得分:0)
如果您希望将名称作为参考,请确保引用ID而不是名称,将供应商名称作为主要名称,将ID作为唯一名称。虽然ID主键是高度推荐的