繁体   English   中英

如何重命名 mysql 中的外键?

[英]How do I rename a foreign key in mysql?

我们刚刚在一个大表上完成了一个长时间运行的迁移,并最终在我们的 conversation_tags 表上得到了以下约束:

CONSTRAINT `conversation_tags_ibfk_1` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`)

不幸的是,某处有一个错误,因为我们想要的是:

CONSTRAINT `fk_conversation_tags_tags` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`)

删除和重新添加约束将意味着另外两个长查询。 有没有办法在单个查询中重命名约束?

文档中:

单个ALTER TABLE语句中允许使用多个ADDALTERDROPCHANGE子句,以逗号分隔。 这是标准 SQL 的 MySQL 扩展,每个 ALTER TABLE 语句只允许每个子句中的一个。

这样,您可以将删除和重新创建组合到一个查询中,这应该比删除约束并在两个查询中创建它更快:

ALTER TABLE conversation_tags
DROP FOREIGN KEY `conversation_tags_ibfk_1`,
ADD CONSTRAINT `fk_conversation_tags_tags` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`);

抱歉,只能在 mySQL 中删除和重新附加约束

mysql ALTER TABLE 语法中似乎没有该功能。

但是它支持 Oracle。

请参考我在MySQL 术语“约束”与“外键”区别中的回答? 了解为什么约束名称与您想要的不同。 但是,MySQL 没有重命名约束功能,因此需要使用所需的名称 DROP 和 ADD FK。 https://dev.mysql.com/doc/refman/5.5/en/alter-table.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM