我有一个已经存在的表,其中的字段应该是唯一的,但不是。我只知道这一点,因为表中的条目与另一个已存在的条目具有相同的值,这导致了问题。
如何使此字段仅接受唯一值?
答案 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关键字。
答案 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结构表。
有俄语版本,但英文版应该是相同的。只需单击“唯一”按钮此外,您可以将列设为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);