更改实时表格以使密钥非唯一

时间:2010-11-10 01:16:56

标签: mysql unique alter-table

我看到了一些与此相关的其他问题,但它们不是MySQL。

数据库是一个实时数据库,所以我不想删除并重新创建表。我只是想让一个专栏不再具有独特性,这在本质上是不太宽松的,所以它不会引起任何问题。

3 个答案:

答案 0 :(得分:29)

如果使用UNIQUE子句将列定义为唯一,则使用:

ALTER TABLE mytable DROP INDEX constraint_name

,或者,如果您的约束是隐式命名的,

ALTER TABLE mytable DROP INDEX column_name

如果使用PRIMARY KEY子句将其定义为唯一,请使用:

ALTER TABLE mytable DROP PRIMARY KEY

但请注意,如果您的表为InnoDB,则删除PRIMARY KEY将导致隐式重新创建表并重建所有索引,这将锁定表并可能使其无法访问很长一段时间。

答案 1 :(得分:4)

这些是phpmyadmin应用程序的说明(如果您使用的是phpMyAdmin)::

在某些情况下,开发人员(您)可能不想放弃它,而只是将“唯一性”修改为“不唯一”。

步骤:

  1. 转到要进行修改的上下文中的表格

  2. 单击“结构”选项卡(主要位于“浏览”旁边)

  3. 在列下方查找“+索引”链接。是的...现在点击它
  4. 现在您可以看到所有“索引”,现在可以单击“DROP”按钮或链接进行修改。
  5. 答案在这里找到: 资料来源:https://forums.phpfreaks.com/topic/164827-phpmyadmin-how-to-make-not-unique/

答案 2 :(得分:1)

只需DROP唯一索引。 不应该是一个活动数据库的问题。如果它是一个非常大的表,您可能会在删除索引时临时阻止某些查询。但只有在添加索引时才会发生

ALTER TABLE table_name DROP INDEX index_name;