如何重命名外键约束 | MySql5.6、InnoDB
How to rename foreign key constraint | MySql 5.6, InnoDB
我需要重命名 fk 约束(删除所有 fk,创建新的),但是 MySql(因为 InnoDB 引擎)为这些约束创建了索引。
我需要手动删除索引吗?或者它会导致问题?请有人描述我这一点。
它不会导致问题。
添加外键应该发现已经有足够的索引而不是添加第二个。即使它增加了一个冗余索引,也没有什么坏处。
我想知道 -- 你为什么关心约束名称是什么?
从 5.6 文档开始:"For ALTER TABLE, unlike CREATE TABLE, ADD FOREIGN KEY ignores index_name if given and uses an automatically generated foreign key name. As a workaround, include the CONSTRAINT clause to specify the foreign key name: ADD CONSTRAINT name FOREIGN KEY (....) ..
" 和 "Adding and dropping a foreign key in the same ALTER TABLE statement is supported for ALTER TABLE ... ALGORITHM=INPLACE but not for ALTER TABLE ... ALGORITHM=COPY."
我提出这个问题的观点是,如果将对 table 的所有更改放入单个语句中,ALTER
通常 运行得更快。但是 DROP
+ ADD
在 COPY
的情况下是不允许的。
我需要重命名 fk 约束(删除所有 fk,创建新的),但是 MySql(因为 InnoDB 引擎)为这些约束创建了索引。 我需要手动删除索引吗?或者它会导致问题?请有人描述我这一点。
它不会导致问题。
添加外键应该发现已经有足够的索引而不是添加第二个。即使它增加了一个冗余索引,也没有什么坏处。
我想知道 -- 你为什么关心约束名称是什么?
从 5.6 文档开始:"For ALTER TABLE, unlike CREATE TABLE, ADD FOREIGN KEY ignores index_name if given and uses an automatically generated foreign key name. As a workaround, include the CONSTRAINT clause to specify the foreign key name: ADD CONSTRAINT name FOREIGN KEY (....) ..
" 和 "Adding and dropping a foreign key in the same ALTER TABLE statement is supported for ALTER TABLE ... ALGORITHM=INPLACE but not for ALTER TABLE ... ALGORITHM=COPY."
我提出这个问题的观点是,如果将对 table 的所有更改放入单个语句中,ALTER
通常 运行得更快。但是 DROP
+ ADD
在 COPY
的情况下是不允许的。