插入具有外键约束的记录

时间:2015-02-14 22:08:13

标签: mysql relational-database

首先,如果这个问题是重复的,我很抱歉 - 但我觉得很困难,在我的问题上写下简短而准确的词语。

current structure

我有这些实体。 左边包含几个组(比如在Unix中,为了使数据一次可用于整个组),目前,它总是1.正确的包含项目 - 中间的一个确保,一个组可以获得访问几个项目。

正如您所看到的,它们之间存在外键关系。现在,我想在 nmd__tree 中创建一个新项目。这样做时,它会返回错误:

  

无法添加或更新子行:外键约束失败   (nmdnmd__tree,CONSTRAINT FK_nmd__tree外键(treeid)   参考nmd__helperusergrouphierarchytreeidfk))

这是有道理的,因为nmd_tree依赖于辅助实体中的有效外键 - 但与此同时,它提出了 treeidfk 尚未知道的问题,因为它在 nmd__tree

中自动生成

解决方案可能是删除关系,在 nmd__tree 中插入记录,提取新写入的主键( treeid )并在中间帮助器实体中创建记录用新的id。它会起作用,但实际上并不是很优雅。此外,删除关系会带来其他潜在问题。

我的目的是创建一个查询,通过一次创建两个记录来解决这个问题。我知道,不可能做一个双插入并找到this suggestion(我的版本没有写任何记录),以及一篇文章,建议存储过程,我看不到应该做一个差

我真的很感激你正朝着正确的方向前进。

1 个答案:

答案 0 :(得分:1)

你似乎已经在错误的方向上定义了你的约束;中间表应该有两个外键约束而不是两个端表。这样,您可以在两个结束表中插入记录,然后使用中间表将它们链接起来。