问题描述:
在刚刚进行项目的开发时,一个简单的删除sql报错,违反完整约束条件 (MALLT_ESHOP1.FK_PARTNER) - 已找到子记录
问题原因:
在oracle中执行删除sql时,其实会去检查你将要删除的这条记录是否在其他表中被作为外键使用,因为一旦这条记录在其他表中被使用了,在oracle这种关系型数据库中是不能直接删除了,所以就报上面的错误了。
解决方式:
第一种就是手动关闭外键约束。 第二种就是查出与你要删除记录所在表的所有有关联的表。可执行下面的sql查询:
select a.constraint_name, a.table_name, b.constraint_name ,b.table_name from
user_constraints a, user_constraints b where a.constraint_type = ‘R’
and b.constraint_type = ‘P’ and a.r_constraint_name =
b.constraint_name and a.constraint_name = ‘FK_PARTNER’
找到关联表后,在将所有关联表中涉及到的子记录删除,这样再执行删除sql就不会报错了。