MYSQL运行正常,换了个数据库(oracle)就报 ORA-02291: violated - parent key not found

MYSQL运行正常,换了个数据库(oracle)就报 ORA-02291: violated - parent key not found,第1张

假设两个表A和B,B中定义了一个外键,它的d列reference到A表的c列。在往d列插数据时候,其值在c列里面并不存在,于是触发这个错误。

从程序角度来说,可能的原因是:程序使用了事务,但是往A表插数据的事务和往B表插数据的事务不是同一个,且都没有commit。虽然写的人觉得,已经往A表插了相应的数据了,但是在往B表插数据的时候,依然无法reference到对应的数据。这个一般不是故意为之,往往是一些疏忽造成的。

一般这个问题是插入的数据在父键的那个表中不存在该记录导致的,

比如父键表a,另一个表b

如果a表字段col1是b表col1的父键,那么在b表中col1字段插入数据1的时候必须保证a表的col1中有1存在,否则就会报这种问题,

或者你可以让b表的col1的值为null也不会报错。

你这个异常报的是违反约束条件。一般来讲是由于外键的关系导致的。

你看一下是不是你在做跟新或者删除的时候,有子表的数据没有删除或者修改。然后导致的主表的记录无法删除或者修改。

在做修改或者删除的时候,一定要先删除或者修改子表的数据才行。

如果是修改的话,你也可以在数据库中建一个触发器来自动关联子表的 *** 作。这样你就能只修改主表的数据,然后子表自己跟着修改了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6635051.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存