MySQL
supporte parfaitement les contraintes uniques.
Cependant, il ne prend pas en charge les contraintes/index partiels, vous devrez donc marquer les images non primaires avec un NULL
au lieu de 0
.
ALTER TABLE file ADD CONSTRAINT ux_file_customer_primary
UNIQUE (customerId, isPrimaryImage)
Vous pouvez insérer un nombre arbitraire de NULL
valeurs dans isPrimaryImage
mais une seule valeur non nulle par client.