今天在清空系统中某些表时,部分表报错如下
truncate table SUP_FOINUNFINV
*
第 1 行出现错误:
ORA-02266: 表中的唯一/主键被启用的外键引用
根据报错的原因可知,要truncate的表的主键被其他表引用了,那么需要将引用这个表的其他表外键先禁用,后期再激活即可
首先你要找到你要truncate的表被哪些表引用了
在系统中有一个数据字典表为user_constraints,记录了系统中的所有的约束,对于外键约束有两个字段,一个是constraint_name ,和r_constraint_name;前者是约束的名称,后者是引用的约束的名称(外键引用的列必须是主键列或者唯一列,所以肯定会有这个约束名称的),查出要截断的表中所有的主键的名称,然后就可以得到被哪些表引用了
--将原来的取消
alter table SUP_FOINUNSH disable primary key cascade
--删除表
truncate table SUP_FOINUNSH
--再使能约束
alter table SUP_FOINUNSH enable primary key
--查看一下约束
select * from user_constraints where
R_CONSTRAINT_NAME in
(select constraint_name from user_constraints where table_name = 'SUP_FOINUNSH')
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28803801/viewspace-768270/
,如需转载,请注明出处,否则将追究法律责任。