首先,如果这个问题是重复的,我很抱歉 - 但我觉得很困难,在我的问题上写下简短而准确的词语。
我有这些实体。 左边包含几个组(比如在Unix中,为了使数据一次可用于整个组),目前,它总是1.正确的包含项目 - 中间的一个确保,一个组可以获得访问几个项目。
正如您所看到的,它们之间存在外键关系。现在,我想在 nmd__tree 中创建一个新项目。这样做时,它会返回错误:
无法添加或更新子行:外键约束失败 (
nmd
。nmd__tree
,CONSTRAINTFK_nmd__tree
外键(treeid
) 参考nmd__helperusergrouphierarchy
(treeidfk
))
这是有道理的,因为nmd_tree依赖于辅助实体中的有效外键 - 但与此同时,它提出了 treeidfk 尚未知道的问题,因为它在 nmd__tree
中自动生成解决方案可能是删除关系,在 nmd__tree 中插入记录,提取新写入的主键( treeid )并在中间帮助器实体中创建记录用新的id。它会起作用,但实际上并不是很优雅。此外,删除关系会带来其他潜在问题。
我的目的是创建一个查询,通过一次创建两个记录来解决这个问题。我知道,不可能做一个双插入并找到this suggestion(我的版本没有写任何记录),以及一篇文章,建议存储过程,我看不到应该做一个差
我真的很感激你正朝着正确的方向前进。
答案 0 :(得分:1)
你似乎已经在错误的方向上定义了你的约束;中间表应该有两个外键约束而不是两个端表。这样,您可以在两个结束表中插入记录,然后使用中间表将它们链接起来。