问题描述
比如系统中的一个学员,加入到了培训班中,在删除这个学员的时候,通常情况下,要不要同时删除学员在班级中的对应关系,我现在的处理方法是:在删除学员的时候,提示了一下,"此学员已加入到培训班中,请先删除培训班中的学员"不知道这样做是不是合理系统使用了hibernate,学员和班级是多对多的关系,且让培训班作为主控方请大家指教,谢谢!
解决方案
解决方案二:
先删培训班信息再删学员信息放在一个事物里处理就可以了
解决方案三:
提示的时候可以在询问下是否确定删除删除则删除学员所有信息接着删除的时候就是先删除培训班里面的信息在删除此学员
解决方案四:
该回复于2011-01-29 16:42:21被版主删除
解决方案五:
如果信息关联性不是很强的话,可以使用级联删除,直接删除掉了,像你这样的提示,其实也是可以的
解决方案六:
如果项目比较复杂的话,建议不删除,可以给学员一个标识值,正常情况下是一个值,非正常情况(如要删除)可以将这个值改变一下。如果直接删除的话可能会造成一些后期维护的麻烦---------------个人看法
解决方案七:
不重要的场合下级联删除得了,重要的场合还是避免物理删除,加个字段做删除标识
解决方案八:
我觉得给提示信息容易做得更加产品化,但现在问题是需要批量删除,如果有多个学员加入到培训班中了,我想最好能作出以下提示信息"学员张三,李四,王五已加入到网络第三期培训班中,请先删除培训班中的对应学员"但是学员名称在异常信息中找不到(加入培训班的学员不能在外部任意删除,我是通过外键约束来进行限制的),异常中只能找到下列消息:SQLError:1451,SQLState:23000Cannotdeleteorupdateaparentrow:aforeignkeyconstraintfails(`cms/t_class_student`,CONSTRAINT`t_class_student_ibfk_1`FOREIGNKEY(`fk_student_id`)REFERENCES`t_student`(`ID`))Couldnotsynchronizedatabasestatewithsession我又不想通过查询整个表去得到学员姓名,我觉得太浪费性能,请教下大家有没有好的办法,谢谢哇。。
解决方案九:
不要以为级联删除很牛X。。。那是很危险的事情
解决方案十:
jiaqiangm兄,有什么危险呢?
解决方案十一:
引用7楼gimm667的回复:
我觉得给提示信息容易做得更加产品化,但现在问题是需要批量删除,如果有多个学员加入到培训班中了,我想最好能作出以下提示信息"学员张三,李四,王五已加入到网络第三期培训班中,请先删除培训班中的对应学员"但是学员名称在异常信息中找不到(加入培训班的学员不能在外部任意删除,我是通过外键约束来进行限制的),异常中只能找到下列消息:SQLError:1451,SQLState:23000……
你可以加个字符串遍历删除删除时不是会抛出错误吗?你就获取这个学院的名称存入字符串展示的时候在进行输出
解决方案十二:
如果只删除学员会报错吧?先删除培训再删除学员,把他们放在一个事务里面处理比较好
解决方案十三:
先删掉班级表中对应学员的信息然后再删除学员表中的学员信息这样的效率要好一点
解决方案十四:
这个好像跟业务有关
解决方案十五:
如果不需要有记录的话,直接配置hibernate的级联关系,使用级联删除。如果数据重要,就加入一个状态值,用来表示存在,删除
解决方案:
很简单,看业务需要
解决方案:
引用楼主gimm667的回复:
系统使用了hibernate,学员和班级是多对多的关系,且让培训班作为主控方
学员和班级应该是多对一的关系,学员和培训班应该是多对多的关系,
解决方案:
还是用事物不要用级联那很危险
解决方案:
具体怎么删要根据具体的需求!