【问题标题】:mysql two FK in the same tablemysql 两个FK在同一张表
【发布时间】:2015-03-01 07:22:33
【问题描述】:

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

当我尝试在 C 中插入一些东西时,如果我用有效 ID 填充指向 A 的 FK 列并让 B 表的 FK 为空或 null 或零,MYSQL 会抛出错误,指出我有另一个 FK 要填充。

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

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

我必须考虑到我也在使用 Hibernate JPA,我的解决方案可以正常工作。但这意味着多了一个具有相同角色的表。

你对这个问题有什么看法?

【问题讨论】:

  • FK 可以为空如果它们被配置为允许空值。实际上发布表的完整定义是必需的,否则人们不得不猜测

标签: mysql database spring hibernate jpa


【解决方案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),
  ...
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-15
    • 2012-12-29
    • 2020-05-25
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多