2

我正在使用Mysql。我有两张彼此一一相关的表。

换句话说,它们都具有引用另一个表的主键的外键约束。

如果我尝试为每个表插入一条记录,其中每条记录引用另一条记录。喜欢:

Mysql 数据库会阻止这样的操作,因为一对一的外键约束。

这就像鸡蛋问题。

但是,我注意到在 Java hibernate 中,如果两个实体类是一对一相关的,则可以进行这样的操作。

在 Hibernate 中如何做到这一点,因为我注意到两个插入(来自 Hibernate 调试消息)就像我所做的那样是分开的。所以没有什么特别的。

或者,即使它应该引用的记录尚不存在,我如何强制插入一条记录?

4

2 回答 2

3

为引用的列之一放置空值,引用列确实允许空值。稍后在引用的列中插入记录后,您可以更新该列。

于 2011-07-23T11:55:59.280 回答
1

您可以尝试通过SET foreign_key_checks = 0在两个插入查询之前立即运行来禁用外键检查,并在查询之后立即通过执行来启用外键检查SET foreign_key_checks = 1

有关外键约束的更多信息。

mysql > SET foreign_key_checks = 0;
mysql > INSERT INTO t1 (t2_id) VALUES (1);
mysql > INSERT INTO t2 (t1_id) VALUES (1);
mysql > SET foreign_key_checks = 1;
于 2011-07-23T11:48:18.387 回答