假设有两个表,一个是出版社表(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了。

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

被折叠的 条评论
为什么被折叠?



