我有一个已经存在的表,其中的字段应该是唯一的,但不是。我只知道这一点,因为在表中创建了一个与另一个已经存在的条目具有相同值的条目,这导致了问题。
如何使该字段仅接受唯一值?
我有一个已经存在的表,其中的字段应该是唯一的,但不是。我只知道这一点,因为在表中创建了一个与另一个已经存在的条目具有相同值的条目,这导致了问题。
如何使该字段仅接受唯一值?
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 关键字。
只需在您的数据库 phpmyadmin 中编写此查询。
ALTER TABLE TableName ADD UNIQUE (FieldName)
例如:ALTER TABLE user ADD UNIQUE (email)
如果您还想命名约束,请使用:
ALTER TABLE myTable
ADD CONSTRAINT constraintName
UNIQUE (columnName);
CREATE UNIQUE INDEX foo ON table_name (field_name)
在执行该 sql 之前,您必须删除该列上的重复值。该列上任何现有的重复值都会导致您出现mysql 错误 1062
最简单和最快的方法是使用 phpmyadmin 结构表。
那里是俄语,但英语版本应该是一样的。只需单击唯一按钮。您也可以从那里将列设为 PRIMARY 或 DELETE。
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);
是正确的答案
插入部分
INSERT IGNORE INTO mytable ....
这段代码是为了解决我们为现有表设置唯一键的问题
alter ignore table ioni_groups add unique (group_name);