2016-11-25 69 views
-1

复合主键我尝试做到MySQL这样的:MySQL的:为外键

创建具有A,B,C柱和一个复合主键和B 第一表创建第二个表格中的,B,D,E列,A,B,D作为主键,当然A,B作为第一个表的外部引用。

我使用MySQL工作台来创建列,添加键和夷的限制,但是当我尝试应用我收到此错误:

错误1215:无法添加外键约束

的事情是,我不知道我的设计究竟出了什么问题。

你能帮助我吗?

+0

请给[mcve]并阅读[问]。特别是显示你的DDL。可能你没有意识到FK的引用列必须声明为PK或UNIQUE NOT NULL。 (这里是ABDE中的AB)但是“引用为外键”没有意义。 FK执行参照。我希望你真的想要ABDE(AB)REFERENCES ABC(AB)。请谷歌说明你的问题(使用“引用”的方式),这是一个常见问题。 – philipxy

回答

0

你的问题是你在第二个表中有(A, B)对,它们在你的第一个表中没有匹配。

运行以下命令:

select secondTable.A, secondTable.B 
from secondTable 
where not exists (select 1 
        from firstTable 
        where firstTable.A = secondTable.A and firstTable.B = secondTable.B); 

有了这个查询,你会发现ABsecondTable其中不firstTable匹配任何记录。

为了能够创建foreign key,你需要无论是从secondTableinsert他们的比赛intofirstTable删除这些记录。

+0

谢谢你的帮助。其实我没有任何数据进入第二张桌子,因为我正在建造它。 –

+0

@RananQuintin,做表匹配的类型?你能给我们一些代码吗? –