MySQL
soporta perfectamente restricciones únicas.
Sin embargo, no admite restricciones/índices parciales, por lo que deberá marcar las imágenes no primarias 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 solo un valor no nulo por cliente.