我已经成功地在heidisql中使用外键选项卡添加了我的第一个fk,并添加了所有适当的部分。
我试图通过使用fk选项卡和运行查询对我的第二个相关列执行相同的操作,但是我不断得到一个错误。 SQL Error (1005): Can't create table sprout.#sql-430_3 (errno: 150 "Foreign key constraint is incorrectly formed"
)
sprout是我的db名称,所以我不知道为什么它会说cant create table sprout(因为我在查询中没有引用它)。
我的第一个fk的sql查询(通过heidisql生成):
ALTER TABLE `purchase_history`
ADD CONSTRAINT `bus_id` FOREIGN KEY (`bus_id`) REFERENCES `business` (`bus_id`);
我的第二个fk的sql查询(通过heidisql生成)
ALTER TABLE `purchase_history`
ADD CONSTRAINT `bus_name_fk` FOREIGN KEY (`bus_name`) REFERENCES `business` (`bus_name`);
我写的sql查询试图添加第二个fk
Alter table purchase_history
Add constraint bus_name_fk
Foreign key (bus_name)
references business(bus_name);
有人能帮我解释一下我的约束是怎么形成的吗?据我所知,我能够为表添加另一个约束。
1条答案
按热度按时间dwthyt8l1#
这太长了,不能发表评论。
呵呵?为什么要在同一个表中添加两个外部约束。但是使用不同的列?这说不通。一般来说,外键应该引用另一个表的主键,我假设是
bus_id
.然后,如果您想要企业名称,可以使用
join
为了得到这个名字。