MySQL - 使现有的Field Unique

时间:2011-02-18 05:43:29

标签: mysql unique-constraint

我有一个已经存在的表,其中的字段应该是唯一的,但不是。我只知道这一点,因为表中的条目与另一个已存在的条目具有相同的值,这导致了问题。

如何使此字段仅接受唯一值?

7 个答案:

答案 0 :(得分:258)

ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

对于MySQL 5.7.4或更高版本:

ALTER TABLE mytbl ADD UNIQUE (columnName);
  

从MySQL 5.7.4开始,删除了ALTER TABLE的IGNORE子句   它的使用会产生错误。

因此,请确保首先删除重复的条目,因为不再支持IGNORE关键字。

Reference

答案 1 :(得分:30)

只需在您的数据库phpmyadmin中编写此查询。

ALTER TABLE TableName ADD UNIQUE (FieldName)

例如:ALTER TABLE user ADD UNIQUE (email)

答案 2 :(得分:14)

如果您还想命名约束,请使用:

ALTER TABLE myTable
  ADD CONSTRAINT constraintName 
    UNIQUE (columnName);

答案 3 :(得分:6)

CREATE UNIQUE INDEX foo ON table_name (field_name)

(您必须在此之前删除重复的值。)

答案 4 :(得分:3)

最简单,最快捷的方法是使用phpmyadmin结构表。

USE PHPMYADMIN ADMIN PANEL!

有俄语版本,但英文版应该是相同的。只需单击“唯一”按钮此外,您可以将列设为PRIMARY或DELETE。

答案 5 :(得分:2)

ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

是正确答案

插入部分

INSERT IGNORE INTO mytable ....

答案 6 :(得分:1)

此代码用于解决我们的问题,即为现有表

设置唯一键
alter ignore table ioni_groups add unique (group_name);