插入一对一的关系

时间:2014-05-23 07:10:23

标签: sql sql-server database jpa

如何以一对一的关系插入记录?

假设我有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。

  1. 我是否需要首先插入tableA然后插入其他? (只是这样做,它不起作用)
  2. 我是否需要同时在表格中插入数据? (如何?在JPA中会很好)

1 个答案:

答案 0 :(得分:11)

这里我的评论再次作为答案

因为你在tableB和tableC中有一个引用到tableA,你必须先插入tableA并检索生成的PK。然后,您可以使用检索到的ID插入任何其他表。对于JPA,请查看此处:How to get Id of last persisted entity using JPA

这是一个如何在sql server中实现这个的例子: http://sqlfiddle.com/#!3/a3f62/3

这是关系数据库和外键的基础,我没有读过wiki文章,但它必须提到相同的想法:http://en.wikipedia.org/wiki/Foreign_key