在一个教育系统里面,有 科目表 ,章节表(每一科目对应若干大章节),小节表(每一大章节下面有若干小节),习题表(每一小节对应若干习题),
在后台管理系统中 有这样几个功能要实现,在 科目列表页面中 可以删除某一科目,在章节列表页面中,可以删除某一章节,小节列表和习题列表同样,
那么有一个问题要先提出来,就是科目被删除后,科目下面对应的大章节,大章节对应的小章节,以及习题 要不要同步删除?
当然是要同步删除的。
当遇到这种有依赖关系(可以理解为连锁效应)的情况,何以解决,唯有触发器。
(表的具体结构没必要说明,不影响理解)
delimiter && drop trigger if exists del_sorts; create trigger del_sorts after delete on course_sorts for each row begin delete from course_chapter where pid=old.id; end && delimiter ; delimiter && drop trigger if exists del_chapter; create trigger del_chapter after delete on course_chapter for each row begin delete from course_section where pid=old.id; end && delimiter ; delimiter && drop trigger if exists del_section; create trigger del_section after delete on course_section for each row begin delete from practice where section_id=old.id; end && delimiter ;