首页 > 解决方案 > 如何重命名外键约束 | MySql 5.6,InnoDB

问题描述

我需要重命名 fk 约束(删除所有 fk,创建新的),但 MySql(cuz InnoDB 引擎)为这些约束创建了索引。我需要手动删除索引吗?还是会导致问题?请有人描述我这一点。

标签: mysqlconstraintsinnodbdatabase-indexes

解决方案


它不会导致问题。

添加 FK应该发现已经有足够的索引,而不是添加第二个。即使它添加了冗余索引,也没有什么坏处。

我想知道——你为什么关心约束名称是什么?

从 5.6 文档开始:“对于 ALTER TABLE,与 CREATE TABLE 不同,如果给定,ADD FOREIGN KEY 会忽略 index_name 并使用自动生成的外键名称。作为一种解决方法,包括 CONSTRAINT 子句以指定外键名称:ADD CONSTRAINT name FOREIGN KEY (....) ..”和“添加和删除ALTER TABLE ... ALGORITHM=INPLACE 支持同一 ALTER TABLE 语句中的外键,但 ALTER TABLE ... ALGORITHM=COPY 不支持。”

我提出这一点的目的是,如果您将所有对表的更改放入单个语句中,ALTER 通常会运行得更快。但是在这种情况下不允许使用DROP+ 。ADDCOPY


推荐阅读