Проверьте ограничение, чтобы разрешить только одну комбинацию из двух столбцов

У меня есть таблица для хранения телефонных номеров человека. Есть флаг (IsDefault), чтобы пометить телефон как телефон по умолчанию. Должен быть только один телефон на человека, помеченный как телефон по умолчанию. Можно ли создать проверочное ограничение, чтобы разрешить только одну комбинацию PersonId и IsDefault = True?

1 ответ

Решение

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

CREATE TABLE PhoneNumber (
ID int primary key,
PhoneNumber nvarchar(20),
PersonID int,
IsDefault bit
)
GO

CREATE UNIQUE INDEX UX_Default_PhoneNumber
ON PhoneNumber(PersonID)
WHERE IsDefault = 1
GO

Это обеспечивает уникальный PersonID только тогда, когда IsDefault имеет значение true.

Другие вопросы по тегам