解决mysql执行删除表中外键的语句,外键却仍然存在的问题

笔者最近在学习尚硅谷的数据库课程时,又遇到了一个奇怪的小问题,但是老师在网课里却没有发现并解释如何去解决:

  1. 使用 `alter table` 语句删除外键约束:
    alter table stuinfo drop foreign key fk_stuinfo_major;

    Terminal显示语句执行成功:
    解决mysql执行删除表中外键的语句,外键却仍然存在的问题

  2. 但是当使用 `show index` 语句再次查看索引时却发现依然存在:
    show index from stuinfo;

    解决mysql执行删除表中外键的语句,外键却仍然存在的问题

原因是为什么呢?笔者经过搜索和阅读,找到了一种比较合理的解释:MYSQL在建外键后,会自动建一个同名的索引。而删除外键的时候,这个同名索引如果没被删,再查询就还能看到。如果再执行一次删除同名索引的存在,再查询外键,就看不到外键了。

alter table stuinfo drop index fk_stuinfo_major;

解决mysql执行删除表中外键的语句,外键却仍然存在的问题

这时候再次查询就没有了!

解决mysql执行删除表中外键的语句,外键却仍然存在的问题

在SQLyog里面查询也是一样的:

desc stuinfo;

解决mysql执行删除表中外键的语句,外键却仍然存在的问题

参考链接:

https://blog.csdn.net/digitalkee/article/details/102595614

上一篇:MySQL入门命令之约束、标识列


下一篇:第一节----MySQL概述