Tengo una tabla MySQL define:

File
--------------------------
ID int(11) PK
name varchar(100)
customerId int(11) FK
isPrimaryImage tinyint(1)
....


He leído aquí que MySQL no soporta un UNIQUE CONSTRAINT con un WHERE condición. Para cada customerId tendríamos sólo una primaryImage = 1.

Entonces, ¿qué otra cosa puedo hacer para hacer cumplir esta restricción?

  • Ver: stackoverflow.com/questions/2504007/…
  • Incluso si MySQL soporta restricciones únicas, no puede utilizar uno aquí (suponiendo que usted varias imágenes secundarias por cliente), ya tendrás varias tuplas con el mismo customerID y isPrimaryImage = 0 (pero se puede usar NULL en lugar de 0 para estos).
  • Diseño de la tabla está apagado, no se puede exigir lo que quiera con tal de diseño.
  • Estoy de acuerdo con Michael J. V. – en lugar de hacerlo a tu manera, me desharía de la isPrimaryImage columna y agregar un customerPrimaryImage tabla en lugar de (tener un CustomerID, un ImageID y una restricción unique en CustomerID).
InformationsquelleAutor kasdega | 2011-07-13

1 Comentario

  1. 54

    MySQL es perfectamente compatible con las restricciones unique.

    No apoyo parcial de las restricciones/índices, aunque, por lo que tendría que marca principal no es el de las imágenes con un NULL en lugar de 0.

    ALTER TABLE file ADD CONSTRAINT ux_file_customer_primary 
    UNIQUE (customerId, isPrimaryImage)

    Puede insertar un número arbitrario de NULL valores en isPrimaryImage pero sólo un valor no nulo por cliente.

    • aseado. Voy a darle una oportunidad
    • esto es exactamente lo que yo necesitaba, gracias.
    • casse-noix ??

Dejar respuesta

Please enter your comment!
Please enter your name here