ITPub博客

首页 > 数据库 > Oracle > 【YashanDB知识库】自关联外键插入数据时报错:YAS-02033 foreign key constraint

【YashanDB知识库】自关联外键插入数据时报错:YAS-02033 foreign key constraint

原创 Oracle 作者:崖山数据库系统YashanDB 时间:2024-08-05 15:38:42 0 删除 编辑

问题现象

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

drop table self_f_key;
create table self_f_key(t1 number primary key not null, t2 number);
create index i_s_1 on self_f_key(t2);
alter table self_f_key add constraint c_0001 foreign key(t2) references self_f_key(t1);

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

但是yashandb插入失败:

问题的风险及影响

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

问题影响的版本

所有的yashandb版本

问题发生原因

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

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

解决方法及规避方式

规避方法:禁用外键约束

问题分析和处理过程

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

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

经验总结

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3024211/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639734