【发布时间】:2014-07-12 10:49:17
【问题描述】:
如何以一对一的关系插入记录?
假设我有 3 个表:表 A、表 B、表 C
我必须在表 A 被引用为主键的表中插入一条记录。
让我们这样说:
tableB.PK = tableA.PK
tableC.PK = tableA.PK
现在,
当我在 tableB 或 tableC 中插入记录时,会发生错误:
Error Message: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_tableB_tableA"
但是当我在作为两个表主键的基础的 tableA 中插入时,它是可以的,它会增加。
如何插入记录?特别是在 JPA 中。
- 是否需要先插入tableA再插入其他? (只是这样做了,但它不起作用)
- 是否需要同时在表中插入数据? (如何?在 JPA 中会很好)
【问题讨论】:
-
由于您在 tableB 和 tableC 中有对 tableA 的引用,因此您必须先插入 tableA 并检索生成的 PK。然后,您可以使用检索到的 ID 插入任何其他表。对于 JPA,请看这里:stackoverflow.com/questions/9649515/…
-
@deterministicFail:这更像是一个答案而不是评论
-
哦,我明白了,我需要检索生成的 PK 以进行有效插入。该链接虽然有帮助。谢谢。但是为什么我试图直接插入数据库,而我在插入 tableA 后插入 tableB 时出现错误,尽管我将 ID 号放在 tableA 中存在的 tableB 中?
-
如果没有您的来源,我只能假设您正在处理事务并尝试插入不同的会话上下文。或者你简单地使用了错误的 id
-
我在 JPA 中得到它,它必须在事务中。但是在sql server中怎么样。只是好奇。我在 tableB.PK 中手动输入 1,其中 tableA.PK 有 1。它发生错误即使我输入正确的 ID,我也无法在 tableB 中输入记录。
标签: sql sql-server database jpa