Код: Выделить всё
ProductVariant
----------------------------
ProductVariantID PK
ProductID FK NOT NULL
VariantID FK NULL
VariantValuesID FK NULL
Variant
-----------------------------
VariantID PK
VariantValues
------------------------------
VariantValuesID PK
VariantID FK NOT NULL
Я установил ограничение UNIQUE для этой таблицы
Код: Выделить всё
ALTER TABLE ProductVariant
ADD CONSTRAINT ProdVarVarValUnique UNIQUE (ProductID, VariantID, VariantValuesID);
Код: Выделить всё
ProductID
1
VariantID
NULL
VariantValuesID
NULL
Если уникальность не ограничивает NULL, есть ли способ сохранить это уникальное ограничение, которое работает для любой другой ситуации, но также добавляет ПРОВЕРКУ, которая не допускает новую запись, если входные данные для Variant или VariantValues имеют значение NULL и дубликат ProductID уже есть в таблице? Я надеюсь сделать это без необходимости использовать триггер. Я подумал о том, чтобы просто установить для полей VariantID и VariantValuesID в таблице значение NOT NULL, а затем просто вставить и оставить в таблицах Variant и VariantValues строку, в которой все поля имеют NULL. Поля VariantID и VariantValuesID ОБА должны иметь значение NULL или ОБА поля должны иметь значение INT.
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-are-null