首页 新闻 会员 周边

多表数据删除怎么做??

0
悬赏园豆:50 [已关闭问题]

在设备管理项目中,客户要求某设备报废后,要删除系统中和设备有关的所有记录,

例如维修,台帐等,其中各表中又有主外键关联

怎么才能高效的删除某设备在系统中所有的记录呢?

 

Blues T的主页 Blues T | 初学一级 | 园豆:11
提问于:2009-09-22 14:33
< >
分享
其他回答(5)
0

有外键关联是最头大的事情,还要高效。建议针对特殊情况写一个事务,放在触发器里试试。

事务的处理机制:

1、先根据ID找出外键相关表,

2、有外键的,先再临时禁用外键约束,再删除,其他的正常delete

3、启用外键约束。

不过,这里有个问题,很容易锁住

可以参考这里得到相关的有外键约束的表名

http://www.cnblogs.com/downmoon/archive/2009/09/11/1564391.html

邀月 | 园豆:25475 (高人七级) | 2009-09-22 14:53
0

同意楼上。

邢少 | 园豆:10926 (专家六级) | 2009-09-22 15:09
0

主外键删除从主到外

倾城绝厉 | 园豆:4 (初学一级) | 2009-09-22 17:15
0

这个没有什么高效的捷径吧,主要是考虑数据的一致性,用事务处理比较好些

MyFavorite | 园豆:159 (初学一级) | 2009-09-22 18:18
0

事务,程序的或者存储过程控制都可以。

谢小漫 | 园豆:436 (菜鸟二级) | 2009-09-22 21:44
0

1.如果数据库设计是这样就好搞,比如A 和B关联   A和C关联,可以建立个中间关系表F,这样关系就处理为A关联F,所有A的外键都在F中了,只在这个表搞,就好多了。

2.利用SQL中的TRY CATCH,捕获异常后,获取异常表删除,一层层下去,没使用过,具体行不行没验证。

3.传统做法,o(∩_∩)o...

楼主有好的解决方法了,给发个邮件可以么????????

BillGan | 园豆:240 (菜鸟二级) | 2009-09-22 23:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册