从程序角度来说,可能的原因是:程序使用了事务,但是往A表插数据的事务和往B表插数据的事务不是同一个,且都没有commit。虽然写的人觉得,已经往A表插了相应的数据了,但是在往B表插数据的时候,依然无法reference到对应的数据。这个一般不是故意为之,往往是一些疏忽造成的。
一般这个问题是插入的数据在父键的那个表中不存在该记录导致的,比如父键表a,另一个表b
如果a表字段col1是b表col1的父键,那么在b表中col1字段插入数据1的时候必须保证a表的col1中有1存在,否则就会报这种问题,
或者你可以让b表的col1的值为null也不会报错。
你这个异常报的是违反约束条件。一般来讲是由于外键的关系导致的。你看一下是不是你在做跟新或者删除的时候,有子表的数据没有删除或者修改。然后导致的主表的记录无法删除或者修改。
在做修改或者删除的时候,一定要先删除或者修改子表的数据才行。
如果是修改的话,你也可以在数据库中建一个触发器来自动关联子表的 *** 作。这样你就能只修改主表的数据,然后子表自己跟着修改了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)