ITPub博客

首页 > Linux操作系统 > Linux操作系统 > truncate table时因为外键原因报错

truncate table时因为外键原因报错

原创 Linux操作系统 作者:lihy114 时间:2013-08-12 10:43:15 0 删除 编辑
今天在清空系统中某些表时,部分表报错如下

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博客 ” ,链接:http://blog.itpub.net/28803801/viewspace-768270/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-08-08

  • 博文量
    54
  • 访问量
    151946