Подтвердить что ты не робот

Как обеспечить уникальное ограничение в MySQL?

У меня определена таблица MySQL:

File
--------------------------
ID int(11) PK
name varchar(100)
customerId int(11) FK
isPrimaryImage tinyint(1)
....


Я читал здесь, что MySQL не поддерживает UNIQUE CONSTRAINT с условием WHERE. Для каждого customerId у нас будет только один primaryImage = 1.

Итак, что еще я могу сделать для принудительного применения этого ограничения?

4b9b3361

Ответ 1

MySQL отлично поддерживает уникальные ограничения.

Он не поддерживает частичные ограничения/индексы, поэтому вам нужно будет пометить не первичные изображения с помощью NULL вместо 0.

ALTER TABLE file ADD CONSTRAINT ux_file_customer_primary 
UNIQUE (customerId, isPrimaryImage)

Вы можете вставить произвольное количество значений NULL в isPrimaryImage, но только одно ненулевое значение для каждого клиента.