数据表之间经常存在外键关联的情况,这时如果直接删除父表,会破坏数据表的完整性,也会删除失败。
为正定等地区用户提供了全套网页设计制作服务,及正定网站建设行业解决方案。主营业务为成都网站设计、成都网站制作、正定网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
删除父表有以下两种方法:
下面介绍了如何取消关联表的外键约束并删除主表,也就是上面所说的删除父表的第二种方法。
在数据库中创建两个关联表。创建表 tb_emp4 的 SQL 语句如下:
CREATE TABLE tb_emp4 ( id INT(11) PRIMARY KEY, name VARCHAR(22), location VARCHAR (50) );
接下来创建表 tb_emp5,SQL 语句如下:
CREATE TABLE tb_emp5 ( id INT(11) PRIMARY KEY, name VARCHAR(25), deptId INT(11), salary FLOAT, CONSTRAINT fk_emp4_emp5 FOREIGN KEY (deptId) REFERENCES tb_emp4(id) );
使用 SHOW CREATE TABLE 命令查看表 tb_ emp5 的外键约束,SQL 语句和运行结果如下:
mysql> SHOW CREATE TABLE tb_emp5\G; *************************** 1. row *************************** Table: tb_emp5 Create Table: CREATE TABLE `tb_emp5` ( `id` int(11) NOT NULL, `name` varchar(25) DEFAULT NULL, `deptId` int(11) DEFAULT NULL, `salary` float DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_emp4_emp5` (`deptId`), CONSTRAINT `fk_emp4_emp5` FOREIGN KEY (`deptId`) REFERENCES `tb_emp4` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
由运行结果可以看出,tb_emp5 表为子表,具有名称为 fk_emp4_emp5 的外键约束;tb_emp4 为父表,其主键 id 被子表 tb_ emp5 所关联。
删除被数据表 tb_emp5 关联的数据表 tb_emp4,SQL 语句如下:
mysql> DROP TABLE tb_emp4; ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
由运行结果可以看出,当主表在存在外键约束时,不能被直接删除。
下面解除子表 tb_emp5 的外键约束,SQL语句和运行结果如下:
mysql> ALTER TABLE tb_emp5 DROP FOREIGN KEY fk_emp4_emp5; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0
语句成功执行后,会取消表 tb_emp4 和表 tb_emp5 之间的关联关系。
解除关联关系后,可以使用 DROP TABLE 语句直接删除父表 tb_emp4,SQL 语句如下:
DROP TABLE tb_emp4;
最后通过 SHOW TABLES 命令查看数据表列表,如下所示:
mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | tb_emp5 | | temp | +----------------+ 2 rows in set (0.00 sec)
可以发现,数据库列表中已经不存在名称为 tb_emp4 的表,删除成功。
当前文章:创新互联数据库教程:MySQL删除被其它表关联的主表
标题路径:http://www.gawzjz.com/qtweb/news5/168355.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联