sql - 在一对一关系中插入

标签 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. 是否需要先插入表A,然后再插入其他表? (只是这样做了,但它不起作用)
  2. 我需要同时在表中插入数据吗? (如何?在 JPA 中会很好)

最佳答案

这里又是我的评论作为回答

因为在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

这是关系数据库和外键的基础知识,我没有阅读维基文章,但它不得不提到同样的想法:http://en.wikipedia.org/wiki/Foreign_key

关于sql - 在一对一关系中插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823088/

相关文章:

java - 使用 Hibernate POJO 的 SQL 外键错误

sql-server - 创建聚集主键的 SQL Server 语法

sql-server - 是否可以将 __MigrationHistory 系统表移至新服务器?

mysql - 我如何读取这个文本文件并插入到 MySQL 中?

sql - Oracle UNION 和 ORDER BY 的奇怪问题

mysql - SQL查找重复行

sql - 查询匹配所有的IN

mysql - 在查询中连接表时遇到问题

database - AIR 的面向文档的数据库?

PHP 表单到数据库