MySQL
прекрасно поддерживает уникальные ограничения.
Однако он не поддерживает частичные ограничения / индексы, поэтому вам нужно пометить неосновные изображения символом NULL
вместо 0
.
ALTER TABLE file ADD CONSTRAINT ux_file_customer_primary
UNIQUE (customerId, isPrimaryImage)
Вы можете вставить произвольное количество NULL
значений в isPrimaryImage
, но только одно ненулевое значение для каждого клиента.