自关联外键插入数据时报错:YAS-02033 foreign key constraint violated parent key not found-YashanDB

问题现象

使用如下的sql语句创建自关联外键表:

然后使用如下语句,尝试插入两行数据,这两行数据汇总起来,是符合外键关联关系的:insert into self_f_key select 1,2 from dual union all select 2,1 from dual;

但是yashandb插入失败:

自关联外键插入数据时报错 组 1@1x

问题的风险及影响

影响正常的业务处理流程,同样的建表语句,同样的insert,可以在oracle中正常执行:

自关联外键插入数据时报错 组 2@1x

问题影响的版本

所有的yashandb版本

问题发生原因

目前yashandb在处理此种情况下的完整性约束判断时,没有在事务级进行统一判断,而是使用了类似于一行一行的判断逻辑,

所以在事务级看来没有违反完整性约束的数据无法插入

解决方法及规避方式

规避方法:禁用外键约束

问题分析和处理过程

根据现网的问题场景,构造可以同时在yashandb/oracle执行的sql语句,比较并确认双方的表现差异

yashandb对于此种情况下完整性约束的判断核心在idxCheckKeyExist方法中

经验总结

构造可以同时在yashandb/oracle执行的语句,方便分析确认问题

posted @   YashanDB  阅读(29)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示