MySQL 联级删除(on delete cascade)应用

###场景
有一张c1表
c1表中的字段如下

  • cno :课程号
  • cname:课程名称
  • cpno:先行课
  • credit:学分

#####需求
将某一课程删除之后,将删除以这一课程为先行课的所有课程

###解决方案
将cpno设置为外键,引用的是自身表的cno
使用联级删除(on delete cascade),在外键约束时添加

MySQL 联级删除(on delete cascade)应用


如果没有使用联级删除(on delete cascade),将会包以下错误
MySQL 联级删除(on delete cascade)应用

错误:1451 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED_2)
消息:不能删除或更新父行,外键约束失败(%s)。