Создать уникальную проверку + дополнительную проверку в ограничении MS SQL - PullRequest
0 голосов
/ 30 января 2019

Мне нужно добавить ограничение в следующую таблицу:

Table(
CategoryId INT,
CustomerId INT,
IsActive BIT
....
)

Я хочу, чтобы была только одна комбинация (CategoryId, CustomerId, IsActive = 1), просто не знаю, как ее поместить в однуограничение.Только одна комбинация категории и клиента должна быть активной (Active = 1) в то время, и иметь возможность иметь несколько значений с активными = 0

Я знаю, что это можно сделать с помощью функции, но я пытаюсьнайти путь без него.Что-то вроде:

CONSTRAINT UN_CK_Table UNIQUE (CategoryId, CustomerId, IsActive = 1)

1 Ответ

0 голосов
/ 30 января 2019

Вы можете использовать отфильтрованный уникальный индекс:

CREATE UNIQUE INDEX YourTableUi1 ON YourTable (CategoryId, CustomerId) WHERE (IsActive = 1);
...