关于mysql的级联删除(之前好多人咨询过我)

最近许多项目咨询,mysql进行级联删除的问题。在此做个系统的扫盲。

一 什么是级联删除。

即依赖于外键关系,删除父表时,一并删除独立依赖于此表的子表。

二 如何做到级联删除

其实非常简单,需要建立表的时候明确指定,外键依赖关系的属性为允许级联删除。

ON DELETE CASCADE

三 使用级联删除有什么优缺点

优点很明显,程序删除时变简单了。

缺点也很明显,业务设计时做删除考虑时需要更高的要求。否则易出问题。

时间: 2024-11-08 17:27:47

关于mysql的级联删除(之前好多人咨询过我)的相关文章

mysql内部级联删除

1,创建user表 属性:id,name 2,创建userInfo表 属性:id,age 在userInfo表中创建外键id,如下图: 在user表中插入两个用户信息 (1,'1'),(2,'2') 在userInfo表中插入两个用户信息 (1,1),(2,2) 则如果删除user表中的(1,'1')则会级联删除userInfo中的(1,1) 同时说一下:级联更新时有 一下四个选项

MySQL中利用外键实现级联删除、更新

MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作,包括RESTRICT.NO ACTION.SET NULL和CASCADE.其中RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新:CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录:SET NULL则是表示父表在更新或者删除的时候,子表的对应字段被S

mysql级联删除更新

首先,目前在产品环境可用的MySQL版本(指4.0.x和4.1.x)中,只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎. 下面,我们先创建以下测试用数据库表: CREATE TABLE `roottb` (   `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,   `data` VARCHAR(100) NOT NULL DEFAULT '',   PRIMARY KEY (`id`) ) TYPE=InnoDB; CR

MySql 修改外键 支持级联删除

首先必须要有外键,InnoDB甚么的都不说了,直接上修改句子. ALTER TABLE `t_terminal` DROP FOREIGN KEY `FK704405E7F06A14EF`; ALTER TABLE `t_terminal` ADD CONSTRAINT `FK704405E7F06A14EF` FOREIGN KEY (`userId`) REFERENCES `t_user` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT; 要先删除该

MySql级联删除和更新

文章来源:http://blog.csdn.net/doupei2006/article/details/7949077 (一)利用外键实现级联删除 1.先建立测试数据库 CREATE TABLE `roottb` ( `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL, `data` VARCHAR(100) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) TYPE=InnoDB; CREATE TABLE `subt

[原创]MYSQL中利用外键实现级联删除和更新

MySQL中利用外键实现级联删除.更新 MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作,包括RESTRICT.NO ACTION.SET NULL和CASCADE.其中RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新:CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录:SET NULL则是表示父表

MySQL外键及级联删除 && 表的存储引擎与创建索引 && 删除数据库和表

Messages表: mysql>create table Messages( ->message_id int auto_increment primary key, ->user_name varchar(50) not null, ->author_id int not null, ->body text, ->forum_id int not null); Forums表: mysql>create table Forums( ->forum_id

Mysql实现级联操作(级联更新、级联删除)

一.首先创建两张表stu,sc create table stu( sid int UNSIGNED primary key auto_increment, name varchar(20) not null) TYPE=InnoDB charset=utf8; create table sc( scid int UNSIGNED primary key auto_increment, sid int UNSIGNED not null, score varchar(20) default '0

mysql 触发器实现级联删除有外键的多张表

2019-10-12 10:17:44 1.数据,建表时有可能会报错,只需要把前三行注释删掉就行 -- ---------------------------- -- Table structure for tb_grade -- ---------------------------- DROP TABLE IF EXISTS `tb_grade`; CREATE TABLE `tb_grade` ( `grade_id` int(11) NOT NULL AUTO_INCREMENT, `g