文档详情

数据库技术项目式教程(MySQL)课件 任务4.6级联更新、级联删除.pptx

发布:2025-05-03约1.79千字共10页下载文档
文本预览下载声明

级联更新、级联删除

任务提出InnoDB存储引擎支持外键,为了保证表间数据的一致性,我们往往会设置外键约束。那么,在对表数据操作时,必须满足参照完整性。如要删除的主表记录在从表中存在相关记录,则不能直接删除主表中的该记录。如要修改的字段上设置过表间关系,也要保证修改后的值满足参照完整性。

任务分析本任务采用级联更新、级联删除的方法实现主表和子表中相关记录的更新、删除。

1.级联更新级联更新指修改主表中主键字段的值,其对应从表中外键字段的相应值自动修改。(1)创建外键约束时加上ONUPDATECASCADEFOREIGNKEY(外键字段)REFERENCES主表(主键字段)ONUPDATECASCADE(2)外键约束已经存在,没有设置级联更新,则删除原有外键约束,添加新的外键约束。查看表的建表信息得到外键约束名:SHOWCREATETABLE表名;删除外键约束:ALTERTABLE表名DROPFOREIGNKEY外键约束名;添加新的外键约束:ALTERTABLE从表ADD[CONSTRAINT外键约束名]FOREIGNKEY(外键字段)REFERENCES主表(主键字段)ONUPDATECASCADE;相关知识与技能

【例】将课程编号2003003修改为2003180。(1)修改外键约束设置级联更新1)通过查看表的完整CREATETABLE语句,得知外键约束名;2)删除原有外键约束;3)添加新的外键约束,设置级联更新ONUPDATECASCADE;(2)编写执行UPDATE语句修改主表Course中的Cno,子表Score中相应的Cno值自动修改任务实施

2.级联删除级联删除指删除主表中的记录,其对应子表中的相应记录自动删除。设置外键约束时加上ONDELETECASCADEforeignkey(外键字段)references主表(主键字段)ONDELETECASCADE相关知识与技能

【例】因学号为202231010100102的学生退学,在School数据库中删除该学生的所有相关记录。(1)删除原有外键约束FK_Live_Student,添加新的外键约束设置级联删除1)删除原有外键约束ALTERTABLELiveDROPFOREIGNKEYFK_Live_Student;2)添加新的外键约束,设置级联删除ONDELETECASCADEALTERTABLELiveADDCONSTRAINTFK_Live_StudentFOREIGNKEY(Sno)REFERENCESStudent(Sno)ONDELETECASCADE;(2)删除原有外键约束FK_Score_Student,添加新的外键约束设置级联删除。(3)编写执行DELETE语句删除主表Student中该学生记录,子表Score和Live表中相应的记录自动删除。任务实施

3.设置外键失效先设置外键失效,修改后再设置外键生效。查看外键约束是否有效SELECT@@FOREIGN_KEY_CHECKS;#1表示有效,0表示失效。设置外键失效SETFOREIGN_KEY_CHECKS=0;编写执行UPDATE语句、DELETE语句后设置外键生效SETFOREIGN_KEY_CHECKS=1;相关知识与技能

【例】将课程编号2003003修改为2003180。1)查看外键约束是否有效SELECT@@FOREIGN_KEY_CHECKS;#1表示有效,0表示失效。2)设置外键失效SETFOREIGN_KEY_CHECKS=0;3)编写执行UPDATE语句UPDATECourseSETCno=2003180WHERECno=2003003;UPDATEScoreSETCno=2003180WHERECno=2003003;4)设置外键生效SETFOREIGN_KEY_CHECKS=1;任务实施

任务总结若在InnoDB存储引擎的表中设置了外键约束,在进行数据更新时要保证数据库中数据的一致性,可设置为级联修改、级联删除。

显示全部
相似文档