CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `email` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE `order` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `order_no` varchar(20) NOT NULL, PRIMARY KEY (`id`), INDEX `user_id_idx` (`user_id`), CONSTRAINT `user_id_fk` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
在上面的代码中,user表和order表通过user_id字段关联,user表的id字段为外键。在order表的`user_id_fk`外键约束中,使用`ON DELETE CASCADE`表示当user表中的数据被删除时,order表中的记录也会被删除。
使用外键关联进行联表删除,需要按照以下步骤进行:
/* 首先需要关闭外键约束 */ SET FOREIGN_KEY_CHECKS=0; /* 删除order表中的记录 */ DELETE FROM `order` WHERE `id` = 1; /* 删除user表中的记录 */ DELETE FROM `user` WHERE `id` = 1; /* 开启外键约束 */ SET FOREIGN_KEY_CHECKS=1;
在上述代码中,需要注意先关闭外键约束,否则会因为外键约束而无法删除相关记录。
使用MySQL的外键关联进行联表删除可以帮助用户更好地管理数据,减少冗余记录,提高数据查询和管理效率。希望本文能够帮助到您。