比如有一个学校,学校下面有N个学院,学院下有N个班级,班级下有N个学生。没个表都设置好了外键。
现在我要删除这个学校,怎么删除?
以后学生可能上传N张照片,照片可能有N条评论,评论可能有N个人点支持。。。。。
如何做才能不管这个层有多少个?
建议:不要使用数据库的级别的级联删除,而改用程序来实现这些删除操作
否则很容易出现数据完整性无法保证的问题,甚至如果数据库设计有问题的话可能导致删除意外的数据造成损失,就算数据库设计没有问题,这种自动删除也基本上属于不可控删除,应该避免
在设置外键的时候可以加个选项
on delete cascade
这样在1:n的情况下,1方删除了n方会全部删除
建议使用触发器,只要学校将被删,就先删除相对应的班级和学生。
嗯,同意楼上的,级联操作确实会出现很多问题.
不能用联机,都要用程序来控制,不要怕麻烦,用事务来实现,其实如果事前设计好的,操作都应该是分来的