Sim*_*mon 30 mysql foreign-keys
我们刚刚在一个大型表上完成了长时间运行的迁移,最终在conversation_tags表上遇到了以下约束:
CONSTRAINT `conversation_tags_ibfk_1` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`)
Run Code Online (Sandbox Code Playgroud)
不幸的是,某处有一个错误,因为我们想要的是:
CONSTRAINT `fk_conversation_tags_tags` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`)
Run Code Online (Sandbox Code Playgroud)
删除和重新添加约束将意味着另外两个长查询.有没有办法在单个查询中重命名约束?
bra*_*aks 61
从文档:
在单个ALTER TABLE语句中允许使用多个ADD,ALTER,DROP和CHANGE子句,以逗号分隔.这是标准SQL的MySQL扩展,它只允许每个ALTER TABLE语句中的一个子句.
这样,您可以将drop和recreate组合到一个查询中,这应该比删除约束并在两个查询中创建它更快:
ALTER TABLE conversation_tags
DROP FOREIGN KEY `conversation_tags_ibfk_1`,
ADD CONSTRAINT `fk_conversation_tags_tags` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24887 次 |
| 最近记录: |