Tengo una tabla ya existente con un campo que debería ser único pero no lo es. Solo sé esto porque se hizo una entrada en la tabla que tenía el mismo valor que otra entrada ya existente, y esto causó problemas.
¿Cómo hago que este campo solo acepte valores únicos?
mysql
unique-constraint
Lothar
fuente
fuente
If IGNORE is specified, only the first row is used of rows with duplicates on a unique key, The other conflicting rows are deleted.
Documentos deALTER
de realizar esto?ALTER IGNORE
todavía puede dar un error duplicado en la versión MySQL> 5.5 y en InnoDB por razones de seguridad de sus datos. Si está seguro de que mantener la primera de las filas duplicadas es lo correcto, intenteset session old_alter_table=1
. No te olvides de ponerlo de nuevo. mysqlolyk.wordpress.com/2012/02/18/…Simplemente escriba esta consulta en su db phpmyadmin.
P.ej:
ALTER TABLE user ADD UNIQUE (email)
fuente
Si también desea nombrar la restricción, use esto:
fuente
CREATE UNIQUE INDEX foo ON table_name (field_name)
Debe eliminar los valores duplicados en esa columna antes de ejecutar ese sql. Cualquier valor duplicado existente en esa columna lo llevará al error mysql 1062
fuente
La forma más fácil y rápida sería con la tabla de estructura phpmyadmin.
Ahí está en ruso pero en inglés la versión debería ser la misma. Simplemente haga clic en el botón Único. También desde allí puedes hacer tus columnas PRIMARY o DELETE.
fuente
es la respuesta correcta
la parte insertada
fuente
Este código es para resolver nuestro problema al establecer una clave única para la tabla existente
fuente