MySQL:复合主键作为外键

时间:2016-11-25 09:26:34

标签: mysql foreign-keys key composite-primary-key

我尝试将其转换为mysql:

在A和B上创建第一个包含A,B,C列和复合主键的表。 创建第二个表A,B,D,E列,其中A,B,D为主键,当然A,B从第一个表引用为外来。

我使用mysql workbench创建列,添加键和foreigns约束,但是当我尝试应用时,我收到此错误:

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

问题是我不知道我的设计到底出了什么问题。

你能帮助我吗?

1 个答案:

答案 0 :(得分: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);

使用此查询,您会在A中找到与B中的任何记录都不匹配的secondTablefirstTable值。

为了能够创建foreign key,您需要从secondTableinsert匹配into firstTable中删除这些记录。