Tengo una mesa:
table votes (
id,
user,
email,
address,
primary key(id),
);
Ahora quiero hacer que las columnas usuario, correo electrónico, dirección sean únicas (juntas).
¿Cómo hago esto en MySql?
Por supuesto, el ejemplo es solo ... un ejemplo. Así que no te preocupes por la semántica.
Tengo una tabla MySQL:
y la CLAVE ÚNICA funciona como se esperaba, permite múltiples filas NULAS de id_box_elements e id_router.
Estoy ejecutando MySQL 5.1.42, por lo que probablemente hubo alguna actualización sobre el problema discutido anteriormente. Afortunadamente funciona y espero que siga así.
fuente
Los índices únicos de varias columnas no funcionan en MySQL si tiene un valor NULL en fila, ya que MySQL trata a NULL como un valor único y al menos actualmente no tiene lógica para evitarlo en los índices de varias columnas. Sí, el comportamiento es una locura, ya que limita muchas aplicaciones legítimas de índices de varias columnas, pero es lo que es ... Hasta el momento, es un error que se ha marcado con "no se solucionará" en MySQL pista de error ...
fuente
ENGINE BDB
y, 2) este es un comportamiento documentado , aunque, en mi humilde opinión, no está suficientemente documentado dado lo sorprendente / desagradable que puede ser. Vea el error 25544 bugs.mysql.com/bug.php?id=25544 de MySQL para una discusión.¿Has probado esto?
fuente
UNIQUE KEY
thekey` (user
,email
,address
) `. Estoy usando MYSQL versión 5.5.24 Puede configurar esto incluso en PHPMYADMIN si lo está usando. Estoy usando la versión 3.5.1 de PMA.Esto funciona para mysql versión 5.5.32
fuente
MySql 5 o superior se comporta así (acabo de probar):
Ejemplo: PRODUCT_NAME, PRODUCT_VERSION 'vaso', nulo 'vaso', nulo 'vino', 1
Ahora, si intenta insertar ('vino' 1) nuevamente, informará una violación de restricción Espero que esto ayude
fuente
Puede agregar índices únicos de varias columnas a través de phpMyAdmin . (Probé en la versión 4.0.4)
Navegue a la página de estructura para su tabla de destino. Agregue un índice único a una de las columnas. Expanda la lista de Índices en la parte inferior de la página de estructura para ver el índice único que acaba de agregar. Haga clic en el icono de edición y en el siguiente cuadro de diálogo puede agregar columnas adicionales a ese índice único.
fuente
Lo hago así:
Mi convención para un único
index_name
esTableName_Column1_Column2_Column3_uindex
.fuente
Para agregar un índice único se requieren los siguientes:
1) nombre_tabla
2) nombre_índice
3) columnas en las que desea agregar índice
En su caso, podemos crear un índice único de la siguiente manera:
fuente
Si desea evitar duplicados en el futuro. Cree otra columna, diga id2.
Ahora agregue el único en dos columnas:
fuente
Si está creando una tabla en mysql, use lo siguiente:
fuente
Primero deshazte de los duplicados existentes
Luego agregue la restricción única
Verifique la restricción con
Tenga en cuenta que el usuario, el correo electrónico y la dirección se considerarán únicos si alguno de ellos tiene un valor nulo.
fuente
Para PostgreSQL ... No funcionó para mí con index; me dio un error, así que hice esto:
PostgreSQL le dio a índice único su propio nombre. Supongo que puede cambiar el nombre del índice en las opciones de la tabla, si es necesario cambiarlo ...
fuente