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