删除外键约束出现的问题及解决措施

文章讲述了如何在MySQL中为t_book表添加外键约束,使其引用t_press表的主键,以及当删除外键约束时,为何需要同时删除对应的索引,以消除MUL标记。通过SHOWINDEXES命令可以查看索引信息,并强调删除外键时必须同时删除关联的索引。

假设有两个表,一个是出版社表(t_press),另一个是图书表(t_book)。给t_book表的press_id添加外键,ALTER TABLE t_book ADD CONSTRAINT  fk_pressid FOREIGN KEY(press_id) REFERENCES t_press(press_id);,即它引用了t_press表中的press_id(主键字段)。因为一个图书可以同时被多个出版社出版,因此press_id字段就具有了MUL属性。

当删除t_book中的外键fk_pressid,ALTER TABLE t_book DROP FOREIGN KEY fk_pressid;

发现MUL还在。如下图。

 这是因为创建外键时,系统会自动生成索引。如果在创建外键时,没有定义约束的名字,索引一般是设有外键的字段名;如果定义了外键约束名字,索引名一般也就是外键约束的名字。可以通过SHOW INDEXES FROM t_book;   查看t_book表中的索引,发现有一个fk_pressid的索引名。

因此在删除外键时必须删除外键约束和索引,​​​​​​ALTER TABLE t_book DROP INDEX fk_pressid;  再次查看t_book表结构,发现没有MUL了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值