首页 新闻 会员 周边 捐助

关于删除有关联的数据的问题--苦挠的问题

0
悬赏园豆:50 [已关闭问题] 关闭于 2009-12-21 17:35

从开始工作到现在已经开发过好几个系统。在每个系统中,关于删除有主外键关系的数据的功能我一直把握的不好,这是一个一直困挠我的问题。之前我对于这个问题我一般以假删除做处理。像系统字典里的类型这样的数据,和它相关联的表肯定有N多个,如果做级联删除的话,肯定不现实,万一客户误操作的话,那就完蛋了。所以我一般做伪删除处理,隐藏伪删除的类别,但与之相关的其它数据还是让它显示的,这样做就会让客户觉得很迷糊,想已经删除了这一类别怎么还会在这里出现,而且逻辑上也说不过去;如果我把相关的数据也隐藏的话,那这样就跟级联删除相关数据效果一样了,同样是不能看见相关的数据,且这样会出现很多垃圾数据(对于非重要的数据)和添加新数据时增加的工作量(对于不能重名的数据)。如果把删除功能做成这样,当客户删除一数据里,如有相关的数据则提示他“已有相关数据,先删除相关数据再删除此数据”,这样做就消除了误删的可能性和垃圾数据的积累,但这样做可想而知的工作量,像类别这样的表,跟它相关的表可能会有几十张之多,有次一系统我这样做了,都做的我头都大了(虽然是写在存储过程里都是一些count()的语句)。现在我有一想法就是利用数据库里的主外键约束,删除数据时会出现报错,然后用程序捕获(try{}catch{})错误,判断错误是否是由约束引起的,如果则提示给客户,这样就解决了所有上述所有麻烦,不过不知道这样效率会怎样,有没有哪位高手这样做过或者有更好的办法解决这一事情,请大家帮忙。。。先在此真诚的感谢…

问题补充: 希望高手们说说自己平时的解决方法..
阿松的主页 阿松 | 小虾三级 | 园豆:601
提问于:2009-12-07 16:41
< >
分享
所有回答(3)
0

最好还是先删除明细表的信息,在删除主表的信息

系统的异常开销很大的.需要扑捉很多异常信息.效率下降

woody.wu | 园豆:3621 (老鸟四级) | 2009-12-07 20:09
哥们平时删除数据是怎么个操作法。是怎么判断一数据下有明细信息针对那些像类别一样与很多表关联的数据。
支持(0) 反对(0) 阿松 | 园豆:601 (小虾三级) | 2009-12-08 08:53
0

我感觉有点在用try{}catch{}进行条件判断,效率上应该不会太好;清理数据的事情我也做过,确实头大

Ryan.Sun | 园豆:360 (菜鸟二级) | 2009-12-08 00:28
0

写触发器,当要删除主表时,关联表都删除。

对于只删除明细表来说,没什么复杂的/

hackenliu | 园豆:600 (小虾三级) | 2009-12-08 15:30
这样那绝对不行,因为这可能会产在误删除,而且有些数据是不允许删除的。像类别表与很多表相关联,删除一类别的话,就删除所有的数据那就都完蛋了..
支持(0) 反对(0) 阿松 | 园豆:601 (小虾三级) | 2009-12-08 17:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册