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.