点击蓝色“潭时录”关注我丫
每天和小潭一起快乐的学习~
你好,我是在学mysql的小潭。在12-mysql基础-mysql中的DDL-约束的推文中我们学习了mysql中有关约束的知识,其中遗漏了有关外键级联操作的知识点将在本期推文中做以下补充。
引用12-mysql基础-mysql中的DDL-约束推文中的students库。
/*级联更新和级联删除*/USE students;SHOW INDEX FROM major;SHOW INDEX FROM stuinfo;#如果有外键先删除#alter table stuinfo drop foreign key fk_stu_major;#传统的方式添加外键ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id);SELECT * FROM major;INSERT INTO majorVALUES(1,'mysql'), (2, 'python'),(3,'java');SELECT * FROM stuinfo;INSERT INTO stuinfoSELECT 1,'A','男',NULL,NULL,1 UNION ALLSELECT 2,'B','女',NULL,NULL,1 UNION ALLSELECT 3,'C','女',NULL,NULL,2 UNION ALLSELECT 4,'D','男',NULL,NULL,2 UNION ALLSELECT 5,'E','女',NULL,NULL,2 UNION ALLSELECT 6,'F','男',NULL,NULL,3 UNION ALLSELECT 7,'G','男',NULL,NULL,3#删除专业表的3号专业#直接删主表会报错Cannot delete or update a parent row: a foreign key constraint fails (`students`.`stuinfo`, CONSTRAINT `fk_stu_major` FOREIGN KEY (`majorid`) REFERENCES `major` (`id`))#方式1:级联删除(on delete cascade 级联删除外键)ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;DELETE FROM major WHERE id=3; #会将主表major中id为3的记录删除,同时删除stuinfo表中外键为3的记录#方式2:级联置空(on delete set null 级联置空外键)ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;DELETE FROM major WHERE id=3; #会将主表major中id为3的记录删除,同时将stuinfo表中的等值外键栏设为null

文章转载自潭时录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





