复合主键我尝试做到MySQL这样的:MySQL的:为外键
创建具有A,B,C柱和一个复合主键和B 第一表创建第二个表格中的,B,D,E列,A,B,D作为主键,当然A,B作为第一个表的外部引用。
我使用MySQL工作台来创建列,添加键和夷的限制,但是当我尝试应用我收到此错误:
错误1215:无法添加外键约束
的事情是,我不知道我的设计究竟出了什么问题。
你能帮助我吗?
复合主键我尝试做到MySQL这样的:MySQL的:为外键
创建具有A,B,C柱和一个复合主键和B 第一表创建第二个表格中的,B,D,E列,A,B,D作为主键,当然A,B作为第一个表的外部引用。
我使用MySQL工作台来创建列,添加键和夷的限制,但是当我尝试应用我收到此错误:
错误1215:无法添加外键约束
的事情是,我不知道我的设计究竟出了什么问题。
你能帮助我吗?
你的问题是你在第二个表中有(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);
有了这个查询,你会发现A
,B
值secondTable
其中不firstTable
匹配任何记录。
为了能够创建foreign key
,你需要无论是从secondTable
或insert
他们的比赛into
firstTable
删除这些记录。
谢谢你的帮助。其实我没有任何数据进入第二张桌子,因为我正在建造它。 –
@RananQuintin,做表匹配的类型?你能给我们一些代码吗? –
请给[mcve]并阅读[问]。特别是显示你的DDL。可能你没有意识到FK的引用列必须声明为PK或UNIQUE NOT NULL。 (这里是ABDE中的AB)但是“引用为外键”没有意义。 FK执行参照。我希望你真的想要ABDE(AB)REFERENCES ABC(AB)。请谷歌说明你的问题(使用“引用”的方式),这是一个常见问题。 – philipxy