2007-06-19
删除带外键约束的数据
关键字: foreign key
今天突然发现客户表里面姓名为空的记录竟然有13万之多,日期几乎都是5月31日进来的,在原始数据文件中又没有这些记录,真不知道怎么产生的,因为这些记录常常导致一个身份证号进来返回的是一条无名的记录,客户举报了N次,都是通过改查询代码来搪塞..看来得把这些垃圾数据彻底删除才能解决问题。
一条delete语句下去,一开始是外间约束错误,然后加上5月31日这个条件就不会了,但是半个小时都能没能删除这些垃圾数据,打开后台的session一看,3条类似select /*all rows*/ count(1) from card...的记录在运行,这个应该是oracle检验有没有发生外键冲突的语句,card,account,score表都和customer表有外键关联,难怪整那么久,account、score表的外键都删除后再次delete,还是慢的无法忍受。最后只好把card表上的外键也删除了,然后瞬间就把13万记录删除了,再在card表上重新建立外键。
这种做法其实有风险,可能导致card表的某些记录关联的customer记录被删除,但是考虑到现在的情况,这个可能性很小。而且让oracle保留外键的前提下去删除,不知道半天能不能做完。
一条delete语句下去,一开始是外间约束错误,然后加上5月31日这个条件就不会了,但是半个小时都能没能删除这些垃圾数据,打开后台的session一看,3条类似select /*all rows*/ count(1) from card...的记录在运行,这个应该是oracle检验有没有发生外键冲突的语句,card,account,score表都和customer表有外键关联,难怪整那么久,account、score表的外键都删除后再次delete,还是慢的无法忍受。最后只好把card表上的外键也删除了,然后瞬间就把13万记录删除了,再在card表上重新建立外键。
这种做法其实有风险,可能导致card表的某些记录关联的customer记录被删除,但是考虑到现在的情况,这个可能性很小。而且让oracle保留外键的前提下去删除,不知道半天能不能做完。
发表评论
- 浏览: 394595 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
Gmail
共 8 张
共 8 张
最新评论
-
JIRA不完全手册
楼主,发一份完整的资料给我吧 xwj1003@yahoo.com.cn
-- by volking -
java encoding参考
Good ,thanks.
-- by zuowei -
有多少异常可以重来
我今天也遇到这个问题,才搜到这个帖子~ 还没有解决,等恢复哦
-- by javamanlcy007 -
有多少异常可以重来
这个错误解决了,又抱了别的错误~
-- by iceworld4143 -
有多少异常可以重来
解释不太懂,我也遇到这个问题了,可是我没用ant。 :cry: 等回 ...
-- by iceworld4143






评论排行榜