创建含多外键的Orders表时MySQL报1239错误,求助
问题解答:单表多外键创建及1239错误修复
1. 单个表能否创建多个外键?
完全可以,这是数据库设计里的常规操作。比如你的orders表需要关联客户、员工、承运商信息,就需要同时创建多个外键分别指向对应的表,这种场景非常普遍。
2. 错误原因及修复方案
你遇到的Error Code: 1239错误,是因为外键定义时只指定了要引用的表,却没有明确指定对应表的主键列。虽然有些数据库支持省略(当外键列名和引用表的主键列名一致时),但MySQL要求必须显式写出引用的主键列,否则会判定键引用和表引用不匹配。
修正后的orders表创建SQL如下:
create table orders ( order_ID int not null, customerID int, employee_ID int, order_Date date, Shipper_ID int, primary key(order_ID), foreign key(customerID) references customers(CustomerID), foreign key(employee_ID) references employees(employee_ID), foreign key(shipper_ID) references shippers(Shipper_ID) );
核心修改点:在每个references后面的表名后,加上对应的主键列(比如customers(CustomerID)),确保外键列和引用表的主键列一一对应。
额外提示:你的employees表中出生日期字段拼写错误(Bith_Date应该是Birth_Date),虽然不影响当前外键创建,但建议修正避免后续问题。
内容的提问来源于stack exchange,提问作者KGopan
相关产品推荐
相关产品推荐

