级联删除是在有外键约束的时候使用的,当我们使用外键约束的时候,删除一条数据时可能会删除不成功,因为外键约束,但是如果使用级联删除时,会同时将两张表里的数据都给删除,更新也是如此
创建一个数据表,设置外键约束
CREATE TABLE `sci`(
`sno` INT(11) NOT NULL,
`cno` INT(11) NOT NULL,
`grade` INT(11) NOT NULL CHECK (grade BETWEEN 0 AND 100),
PRIMARY KEY (`sno`),
FOREIGN KEY(sno) REFERENCES student_02(sno),
FOREIGN KEY(cno) REFERENCES course(cno)
);
这里并没有一开始就在创建表的时候就加上级联,后期进行Alter进行设置
ALTER TABLE sci ADD FOREIGN KEY(sno) REFERENCES student_02(sno) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE sci ADD FOREIGN KEY(cno) REFERENCES course(cno) ON UPDATE CASCADE ON DELETE CASCADE;
设置完后,进行删除操作的时候,竟然删除失败
DELETE FROM student_02 WHERE sno = 2;
当我删除掉学生表里的数据时,sci表里sno为2的数据也会删除,但是删除失败
这两个命令可以关闭外键约束,使用之后,发现级联没有了,只会删除单个
SET FOREIGN_KEY_CHECKS = 0;
SET FOREIGN_KEY_CHECKS = 1;
最后查看了sci的表的信息后才发现
原本这里有四个约束,一个是创建表的时候两个约束,还有是后期加上的约束,这里的截图是我删掉了之后,没删之前是四个,所有一直不成功。删掉就可以了