是否可以将 MySQL 唯一索引更改为非唯一索引而不重新创建它

Is it possible to alter a MySQL unique index to non-unique without recreating it

是否可以将 MySQL 唯一索引更改为非唯一索引而不重新创建它(DROPCREATE)?

我正在使用 MySQL 版本 8.0.19。

不,在 MySQL 中,不可能在不删除并重新创建索引的情况下更改索引的定义。没有 ALTER INDEX 声明。

更正:您可以重命名索引而不重建它。您可以创建索引 visible/invisible 而无需重建它。

如果您的意思是要避免删除唯一索引,请阅读 Bill Karwin 的回答,其中正确描述了这是不可能的。

但是,如果您的意思是要在不删除和重新创建 table 的情况下重新创建索引,那么这当然是可能的,例如:

DROP INDEX indexname on tablename;

然后

CREATE UNIQUE indexname ON tablename(columnname);