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

有时候需要删除数据表,提示因为设置了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

  • 22
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值