php - duplicated - mysql find duplicates in same table
php/mysql previene entradas duplicadas en mĂșltiples columnas (2)
Para crear un índice único para los tipos de texto que puede usar
CREATE UNIQUE INDEX indexname ON `tablename` (columnname (100));
(100) aquí después de que columnname le dice a mysql que solo compruebe los primeros 100 bytes como únicos, si especifica (4) como longitud, entonces ambos
hello
hello world
son lo mismo que el índice (ambos son en realidad el hell
en el árbol del índice) y mysql no permite insertarlos en la tabla.
Vea aquí http://dev.mysql.com/doc/refman/5.0/en/create-index.html
Me gustaría crear una práctica estándar para evitar que las tablas tengan duplicados donde sea importante. En la mayoría de los casos, los duplicados son una combinación de variables en lugar de una. Mis claves principales son solo los ids únicos para cada campo, así que no puedo usarlos. Lo que he estado haciendo es consultar primero la tabla y luego si el número de filas para la combinación en cuestión es 0, haciendo la inserción. Sin embargo, he leído que debería ser posible configurar una clave única en múltiples campos para imponer la singularidad. INSERTAR IGNORAR suena como una buena posibilidad, sin embargo, necesitaría ignorarlo en más de una columna.
Como ejemplo, con los seguidores de los campos y seguidos, puede haber múltiples seguidores y seguidores en una tabla, pero solo debe ser una combinación de ambos.
¿Alguien puede sugerir la sintaxis primero para crear las claves únicas en múltiples campos y luego hacer una consulta de inserción de SQL que evite los engaños? Muchas gracias.
Simplemente puede crear un índice de columnas múltiples en estas columnas e imponer la singularidad: consulte el manual de MySQL en http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html .
Por ejemplo, en una tabla con columnas id
(clave principal única), colA
y colB
, ejecuta:
ALTER TABLE table ADD UNIQUE KEY (colA,colB)
Esto es todo: cualquier INSERT que conduzca a una entrada duplicada en estas dos columnas combinadas ahora devolverá un error MySQL en lugar de pasar. Si usa INSERT IGNORE
, no se lanzará ningún error MySQL si ejecutarlo violaría esta restricción única, y su INSERT
sería ignorada silenciosamente.