mysql在同一个表中有两个FK

时间:2015-03-01 07:22:33

标签: mysql database spring hibernate jpa

我有三个表:A,B,C。表C有两个指向A id和B id的FK。

当我尝试在C中插入一些内容时,如果我填充指向A的FK列并使用有效ID并让B表的FK为空或为零或零,则MYSQL抛出错误并说我有另一个FK到继续进行。

这个问题的最佳解决方案是什么?

我在想,有两个C表可以,一个用于A,另一个用于B:C_A,C_B,每个只有一个FK。

我必须考虑我也使用Hibernate JPA,我的解决方案也能正常工作。但这意味着一个额外的表具有相同的角色。

您对此问题有何看法?

1 个答案:

答案 0 :(得分:1)

在我读到Neil Stockton给我的推荐之后,我注意到在那些FK列上我设置了默认值" 0"。这就是为什么,即使我为其中一个FK输入了NULL,它也会抛出错误。

CREATE TABLE `C` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `A_id` int(11) DEFAULT '0',
  `B_id` int(11) DEFAULT '0',
  ...
)

解决方案

CREATE TABLE `C` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `A_id` int(11),
  `B_id` int(11),
  ...
)