mysql - 如何重命名外键约束 | MySql 5.6,InnoDB
问题描述
我需要重命名 fk 约束(删除所有 fk,创建新的),但 MySql(cuz InnoDB 引擎)为这些约束创建了索引。我需要手动删除索引吗?还是会导致问题?请有人描述我这一点。
解决方案
它不会导致问题。
添加 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
+ 。ADD
COPY
推荐阅读
- debugging - 我可以让 gdb/ddd 快速跳到无限递归错误的开头吗?
- php - 如何在yii2的下拉列表中显示多个选定的数据?
- assembly - 将半字加载到寄存器中
- google-apps-script - UrlFetchApp.fetch() 似乎不是更改用户代理
- python - Numpy广播 - 使用变量值
- amazon-web-services - DynamoDB 共享表组的容量
- java - JavaFX 如何在控制器中拆分代码
- nginx - UserFrosting Nginx 资产原始 404
- c++ - 在多线程环境中使用 std::call_once() 进行初始化
- jquery - 尝试使用 jQuery POST 到 Flask 服务器时出现“400 Bad Request: KeyError: 'ID-mod'”错误