MySQL suporta perfeitamente restrições exclusivas. Ele não suporta restrições/índices parciais, portanto, você precisaria marcar imagens não primárias com um
NULL em vez de 0 . ALTER TABLE file ADD CONSTRAINT ux_file_customer_primary
UNIQUE (customerId, isPrimaryImage)
Você pode inserir um número arbitrário de
NULL valores em isPrimaryImage mas apenas um valor não nulo por cliente.