-
2022-06-25 16:11:06
8.4.2 删除有外键约束的主表
删除有外键约束的主表时,如果直接删除主表,MySQL会报错。此时,有两种方式删除有外键约束的主表,一种方式是先删除有外键约束的从表,再删除主表;另一种方式为先解除外键约束,再删除主表。
在大多数情况下,删除有外键约束的主表时需要保留从表,所以本节先简单介绍如何解除外键约束,然后再删除主表。另一种方式是先删除从表,再删除主表,这种方式比较简单,读者只需要按照顺序先删除从表,再删除主表即可。
在8.1.3节中,数据表t_goods_category与数据表t_goods具有外键约束,并且t_goods_category为主表,t_goods为从表。此时,直接删除主表t_goods_category,MySQL会抛出错误信息。
mysql> DROP TABLE t_goods_category; ERROR 3730 (HY000): Cannot drop table 't_goods_category' referenced by a foreign key constraint 'foreign_category' on table 't_goods'.
可以看到,直接删除主表t_goods_category时,MySQL会抛出“不能删除表t_goods_category,在t_goods中存在外键约束”。
接下来按照8.3.9节中的介绍,取消数据表t_goods_category与数据表t_goods的
更多相关内容 -
MySQL删除有外键约束的表数据方法介绍
2020-12-16 10:06:42在MySQL中删除一张表或一条数据的时候,出现 [Err] 1451 -Cannot deleteorupdatea parent row: aforeignkeyconstraintfails (...) 这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置... -
MySQL删除表的时候忽略外键约束的简单实现
2020-12-16 14:16:18删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。但是在开发过程中,发现Schema设计的有问题而且要删除现有的数据库中所有的表来重新创建也是常有的事情;另外在测试的时候,也有需要重新创建数据库... -
mysql删除外键约束
2022-05-17 19:02:511.通过数据库创建表的语句查看外键约束名 SHOW CREATE TABLE movie -- 建表语句如下 CREATE TABLE `movie` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) DEFAULT NULL, `filename` VARCHAR(255...1.通过数据库创建表的语句查看外键约束名
SHOW CREATE TABLE movie -- 建表语句如下 CREATE TABLE `movie` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) DEFAULT NULL, `filename` VARCHAR(255) DEFAULT NULL, `videoname` VARCHAR(255) DEFAULT NULL, `categoryid` INT(11) DEFAULT NULL, `areaid` INT(11) DEFAULT NULL, `author` VARCHAR(255) DEFAULT NULL, `yeartime` VARCHAR(255) DEFAULT NULL, `playtime` VARCHAR(255) DEFAULT NULL, `content` TEXT, `cs` INT(11) DEFAULT NULL, `score` DECIMAL(10,2) DEFAULT NULL, `create_time` DATETIME DEFAULT NULL, `update_time` DATETIME DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_movie_category` (`categoryid`), KEY `fk_movie_area` (`areaid`), CONSTRAINT `fk_movie_area` FOREIGN KEY (`areaid`) REFERENCES `area` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_movie_category` FOREIGN KEY (`categoryid`) REFERENCES `category` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=INNODB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8
2.解除外键约束
`fk_movie_category` `fk_movie_area` ALTER TABLE movie DROP FOREIGN KEY `fk_movie_category` ALTER TABLE movie DROP FOREIGN KEY `fk_movie_area`
至此,外键约束就解除,可以进行删除外键等操作。
-
如何删除表的外键约束?
2020-08-02 14:43:16删除表的外键约束 我们曾在第一章中讲过外键的作用,以及如何创建一个表的外键。建立了外键我们就建立起了两张表的关联关系,那如果我想删除主表呢?为了确保数据库的正确性,我们必须先解除两个表之间的关联关系,...
@R星校长删除表的外键约束
我们曾在第一章中讲过外键的作用,以及如何创建一个表的外键。建立了外键我们就建立起了两张表的关联关系,那如果我想删除主表呢?为了确保数据库的正确性,我们必须先解除两个表之间的关联关系,那就是删除外键约束啦!让我们先来看看删除外键约束的语法规则。
举个例子: 我们先建立了一个主表语法规则为: ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; 。 country
,表结构如下图所示:
然后建立一个有外键约束的子表Mall_products2
,让它的键country_id
作为外键关联到country
的主键id
。SQL
语句如下:CREATE TABLE Mall_products2 ( id INT(11) PRIMARY KEY, country_name VARCHAR(20) NOT NULL, country_id INT(11) NOT NULL, CONSTRAINT prod_country FOREIGN KEY(country_id) REFERENCES country(id) )
上述语句成功执行后,在表
Mall_products2
上添加了名称为prod_country
的外键约束,外键名称为prod_country
,依赖于表country
的主键id
,从下图中可以看到,已经成功添加了表的外键:
Mall_products2
表结构如下图所示:
下面开始删除外键约束,语句如下:
ALTER TABLE Mall_products2 DROP FOREIGN KEY prod_country;
使用
SHOW CREATE TABLE
查看表Mall_products2
的结构,结果如下:
我们可以看到,FOREIGN KEY
不见了,外键约束删除成功!接下来你们可以自行体验一下了!
-
MySQL删除所有表的外键约束、禁用外键约束
2021-01-18 21:41:07数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能。在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加...删除所有表的外键查询schema中所有外键名称...数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能。在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的关联关系。
在实际开发中,数据库中一般不会存在外键,阿里的开发手册中也强制不使用外键与级联操作,一切外键概念必须在应用层解决。如果数据库中已存在外键了,怎么办呢?
删除所有表的外键
查询schema中所有外键名称然后拼接生成删除语句,再执行。
SELECT CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' DROP FOREIGN KEY ',CONSTRAINT_NAME,' ;')
FROM information_schema.TABLE_CONSTRAINTS c
WHERE c.TABLE_SCHEMA='库名' AND c.CONSTRAINT_TYPE='FOREIGN KEY';
1
2
3
修改MySQL变量FOREIGN_KEY_CHECKS
-- 禁用外键约束
SET FOREIGN_KEY_CHECKS = 0
-- 启用外键约束
SET FOREIGN_KEY_CHECKS = 1;
1
2
3
4
由于FOREIGN_KEY_CHECKS是基于session的,当关闭了session重新建立连接,这个变量就会恢复默认值,也就是开启外键约束,当然我们也可以全局的FOREIGN_KEY_CHECKS变量。
SET GLOBAL FOREIGN_KEY_CHECKS = 0;
1
或者:
SET @@GLOBAL.FOREIGN_KEY_CHECKS = 0;
1
修改完成后,我们可以查看修改后的结果
SELECT @@FOREIGN_KEY_CHECKS;
---------------------
作者:李阿飞
来源:CSDN
原文:https://blog.csdn.net/junlovejava/article/details/78360253
版权声明:本文为博主原创文章,转载请附上博文链接!
-
MySQL删除所有表的外键约束
2020-12-08 16:44:48数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能。在开发中,我们使用PowerDesigner建立物理...再把结果中的删除语句拿出来执行,删除数据库中所有外键约束 SELECT CONCAT('ALTER -
MySQL外键约束的实例讲解
2020-12-14 06:44:31MySQL的外键约束是用来在两个表之间建立链接的,其中一个表发生变化,另外一个表也发生变化。从这个特点来看,它主要是为了保证表数据的一致性和完整性的。 对于两个通过外键关联的表,相关联字段中主键所在的表是主... -
8.3.9 取消数据表的外键约束
2022-06-25 16:09:458.3.9 取消数据表的外键约束 1.语法格式 取消数据表的外键约束的语法格式如下: ALTER TABLE 表名 DROP FOREIGN KEY 外键名 使用DROP FOREIGN KEY关键字删除表中的外键。 2.简单示例 在8.1.3节中我们... -
django在开发中取消外键约束的实现
2020-09-16 20:31:06主要介绍了django在开发中取消外键约束的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
MySQL(四)—— 数据表的约束(外键约束,主键约束等)
2022-03-23 17:35:49文章目录数据表的约束主键约束 数据表的约束 为防止错误的数据被插入到数据表,MySQL中定义了一些维护数据库完整性的规则;这些规则常称为表的约束。常见约束如下: 以上五种约束条件针对表中字段进行限制从而保证... -
oracle查看主外键约束关系
2015-09-21 15:46:46oracle查看主外键约束关系,根据此SQL可以进行主外键约束的查询! -
删除表的外键约束
2020-01-10 16:25:51alter table 表名 drop foreign key 外键别名 -
sql server 删表外键约束报错
2021-11-19 18:31:48创建两个表TblTestA,TblTestB,删掉TblTestA create table dbo.TblTestA( Id bigint primary key identity(1, 1), name varchar(20) unique, ) create table dbo.TblTestB( Id ... -
SQL 怎样删除有外键约束的表
2021-01-20 12:48:10展开全部删除外键约束的表,首先要删除外键关联,然后才可以删除表。如:1、创建表62616964757a686964616fe78988e69d8331333337616439author :CREATETABLE[dbo].[author]([ID][bigint]NOTNULLPRIMARYKEY,[AuthorName... -
数据库两表外键约束无法修改/删除数据--级联修改/删除
2021-10-08 23:53:031.先删除原来的外键 alter table xscj drop constraint FK_kcxx_课程编号2.再增加新的带CASCADE的外键 alter table xscj add constraint FK_kcxx_课程编号 foreign key(课程编号) references kcxx(课程编号) on ... -
删除带外键约束的表数据
2021-03-02 19:09:03MySQL 如何删除有外键约束的表数据 今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 ... -
MySQL 如何删除有外键约束的表数据
2019-05-18 17:32:24MySQL 如何删除有外键约束的表数据 今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 SET... -
Mysql外键约束怎么删除
2021-05-03 17:01:42记录一下碰到的问题。由于我是使用PowerDesigner来建mysql物理...它不让我删除,说存在外键约束,删除会破坏他们的结构。 外键约束:让数据库自己通过外键来保证数据的完整性和一致性,让他们的关联性更强。 虽然它是有 -
MySQL数据表操作及外键约束
2021-06-22 13:39:27MySQL常用数据类型 int 整 型 float 单精度浮点,4字节32位 double 双精度浮点,8字节64位 char 固定长度的字符类型 varchar 可变长度的字符类型 ...查看数据库中包含的表 要先使用USE切换到数据 -
总结三种MySQL外键约束方式
2020-12-14 22:07:21外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松。 这里以MySQL为例,总结一下3种外键约束方式的区别和联系。 ... -
数据库表排序,主表子表放置外键约束
2015-10-10 14:41:00项目中需要把一个数据库的部分表插入到另外一个数据库,设计到外键约束,写了一个程序对主表子表进行排序,插入的时候再也不用去考虑外键约束问题了 -
外键约束(foreign key) [MySQL][数据库]
2022-03-20 00:59:47外键约束(FOREIGN KEY(字段) REFERENCES 主表名(字段)) 外键约束的作用: 限定某个字段的引用完整...我们只需要记住: 我们在"从表"中指定外键约束,那么我们就可以知道那个表是从表了,知道了哪个表是从表,那么我们也就知 -
表的完整性约束-外键约束
2021-01-24 16:18:00外键约束可以使两张表紧密的结合起来,特别是针对修改或者删除的级联操作时,会保证数据的完整性。 外键是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须具有主键约束或者唯一约束。被依赖的... -
sql 删除带外键约束的表的语句是什么
2021-01-18 19:23:38展开全部1、创建主键表,test_class,并建立class_id字段为主键;create table test_class(class_id number, class_name varchar2(20));-- Create/Recreate indexesalter table TEST_CLASSadd constraint P_CLASS_ID... -
mysql oracle 删除外键约束
2021-05-08 01:59:12oracle 删除外键约束 禁用约束 启用约束oracle 删除外键约束 禁用约束 启用约束 执行以下sql...备忘:MySQL中修改表中某列的数据类型、删除外键约束-- MySQL中修改表中某列的数据类型 ALTER TABLE [COLUMN] 表名 M... -
【MySQL】外键约束
2021-12-17 10:08:11外键约束可以使两张表紧密结合起来,特别是对于删除/修改级联操作时,会保证数据的完整性。 子表/从表:使用外键约束的表 (学生表:学号,姓名,性别,年龄,班级号) 父表/主表:含有被依赖的字段的表(班级表...