---
title: 自关联外键场景批量 insert 数据报错 -1452-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于自关联外键场景批量 insert 数据报错 -1452相关的常见问题和使用技巧，帮助您快速解决自关联外键场景批量 insert 数据报错 -1452的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 自关联外键场景批量 insert 数据报错 -1452

更新时间：2026-05-28 02:06

适用版本： V4.0.x 内容类型：Troubleshoot  

## 适用版本

OceanBase 数据库 V4.0 及之前的版本。

## 问题现象

批量 insert 语句执行报错 `ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails`，相同 SQL 在 MySQL 数据库中没有报错。

```shell
CREATE TABLE `karson_test` ( `ID_` varchar(64) COLLATE utf8_bin NOT NULL, `TEST_ID_` varchar(64) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`ID_`), KEY `ACT_FK_TEST` (`TEST_ID_`), CONSTRAINT `ACT_FK_TEST` FOREIGN KEY (`TEST_ID_`) REFERENCES `karson_test` (`ID_`) ON DELETE CASCADE ON UPDATE CASCADE )

[root@127.1:52881][test]> insert into karson_test values('002','002'),('003','002');
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails

```

## 问题原因

OceanBase 数据库 V4.0 及之前的版本在批量 insert 的时候是先做外键检查，再做插入数据的写入。在上述例子中，外键关联的是同一张表的字段，主表从表为同一张表，批量 insert 时只有满足前面的数据插入表中，后面的数据才可正常插入。对插入数据 ('003','002') 检查的时候，数据 ('002','002') 还没有写入，所以会检查失败。

## 解决方法

- 将批量 insert 语句改成单行 insert 进行规避。
 - 升级到问题已修复的版本。OceanBase 数据库 V4.0 之后的版本已修复。

上一篇

[业务插入报错：-6005, Try lock row conflict](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000340646)

下一篇

[循环 INSERT 执行时间越来越慢](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000246037) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
