首页 新闻 会员 周边

关于数据库层级删除数据的问题

0
悬赏园豆:20 [已解决问题] 解决于 2008-10-14 12:14

比如有一个学校,学校下面有N个学院,学院下有N个班级,班级下有N个学生。没个表都设置好了外键。

 

现在我要删除这个学校,怎么删除? 

 

以后学生可能上传N张照片,照片可能有N条评论,评论可能有N个人点支持。。。。。

 

如何做才能不管这个层有多少个?

问题补充: 假设,这一层层全是一对多
Hunts.C的主页 Hunts.C | 菜鸟二级 | 园豆:266
提问于:2008-09-30 23:54
< >
分享
最佳答案
0

建议:不要使用数据库的级别的级联删除,而改用程序来实现这些删除操作

否则很容易出现数据完整性无法保证的问题,甚至如果数据库设计有问题的话可能导致删除意外的数据造成损失,就算数据库设计没有问题,这种自动删除也基本上属于不可控删除,应该避免

丁学 | 专家六级 |园豆:18730 | 2008-10-04 18:20
其他回答(4)
0

在设置外键的时候可以加个选项

on delete cascade

这样在1:n的情况下,1方删除了n方会全部删除

Gray Zhang | 园豆:17610 (专家六级) | 2008-10-01 00:11
0

建议使用触发器,只要学校将被删,就先删除相对应的班级和学生。

天堂口 | 园豆:514 (小虾三级) | 2008-10-02 10:56
0

嗯,同意楼上的,级联操作确实会出现很多问题.

有所为,有所不为 | 园豆:1200 (小虾三级) | 2008-10-09 10:01
0

不能用联机,都要用程序来控制,不要怕麻烦,用事务来实现,其实如果事前设计好的,操作都应该是分来的

zjy | 园豆:3194 (老鸟四级) | 2008-10-10 16:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册