注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

让一切都逝去吧

排骨炖泥菜/猪肝炒苹果/鱼籽狗肉汤/狗头薏米汤

 
 
 

日志

 
 

截断表  

2013-06-21 11:49:21|  分类: 数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
      oracle中清除表的数据可以直接使用truncate table xxx;delete from不是清除,删除了数据可能还会被保留,可以在某个时刻恢复。如果表之间有关联,truncate是可能会出错

ORA-02449:表中的唯一/主键被外键引用的处理办法
ORA-02266:表中的唯一/主键被启用的外部关键字引用

比较偷懒的办法就是先让主键失效,截断表后再让主键生效:
alter table xxx disable primary key cascade;
truncate table xxx;
alter table xxx enable primary key;

彻底点的办法就是找到这些关联,先截断引用的表,然后再截断当前表。查看关联关系的sql有:
select A.*
       from user_constraints A, user_constraints B
       WHERE b.table_name = 'XXX'
        and a.constraint_type = 'R'
        and a.r_constraint_name = b.constraint_name;
select a.constraint_name, a.table_name, b.constraint_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 b.table_name = 'XXX';
两个都可以用,P 代表主键,R 代表外键。
  评论这张
 
阅读(908)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017