我正在使用MySql Workbench,每次重命名表/列时,现有的FK和IDX名称都不会改变。我最终得到了一个模型,所有的FK / IDX名字搞砸了。有没有办法根据新的表名和列名重新生成所有名称,还是我必须逐个更改它们?
答案 0 :(得分:0)
直接在模型上我没有发现任何FK再生等。解决方法如下,但你必须先设计你的模型才能有一个模式:
使用并自定义以下语句:
SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME,
CONCAT('ALTER TABLE `your_schema`.`',TABLE_NAME,'` DROP INDEX `',INDEX_NAME,'`, ADD INDEX `fk_',TABLE_NAME,'_',COLUMN_NAME,'_idx` (`',COLUMN_NAME,'` ASC);') as statement
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';
自定义上面的WHERE以排除例如PRIMARY
索引或其他任何内容。
您还可以在CONCAT
表达式中设置适合您的索引名称的前缀和后缀。
将使用上述SELECT中的前3列来创建第四个表达式。您可以使用第四个表达式的结果批量创建所需的语句。
这可能不是最快的解决方案,但是,一旦将最终语句添加到您的代码段,下次将快速轻松地重新生成模式索引。