MySQL 如何删除有外键约束的表数据

博客介绍了MySQL中因设置外键约束而无法删除数据表的解决办法。一是先删引用外键的表,再删作为外键的表;二是设置FOREIGN_KEY_CHECKS变量,先设为0进行删除、更新操作,再设为1恢复外键。还提及查看该变量值的方法及数据表设外键的参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候需要删除数据表,提示因为设置了foreign key,无法修改删除 ,
此时有两种解决方法:
一、先删除引用外键的表,再删除作为外键的表
二、可以通过设置 FOREIGN_KEY_CHECKS 变量来避免这种情况。

两种方法可以,但有时,数据结构或者外键引用比较复杂时推荐用第二种方法

具体步骤:

  1. 设置 SET FOREIGN_KEY_CHECKS=0;
  2. 删除,更新数据,
  3. 恢复外键 SET FOREIGN_KEY_CHECKS=1;
    另:查看当前 FOREIGN_KEY_CHECKS的值 SELECT @@FOREIGN_KEY_CHECKS;

图示:
直接删除带有外键的表会报错
查看默认的 SET FOREIGN_KEY_CHECKS
在这里插入图片描述
另外附上,mysql数据表设置外键的一种方式:

create table class(
    id int unsigned auto_increment primary key not null,
    name varchar(20) not null
);

create table students(
    id int unsigned auto_increment primary key not null,
    class_id int unsigned,
    foreign key (class_id) references class(id),  #设置外键
    name varchar(20) not null
);

參考:https://www.cnblogs.com/fu-yong/p/9776937.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值