У меня есть следующие схемы таблицы:SQL Проверочное ограничение на основе графов
CREATE TABLE saved_custom_view (
[saved_custom_view_id] BIGINT IDENTITY (1, 1) NOT NULL,
[user_id] BIGINT NULL,
[name] NVARCHAR (250) NOT NULL,
[is_default_view] BIT NOT NULL DEFAULT 0
CONSTRAINT [PK__saved_custom_view] PRIMARY KEY CLUSTERED ([saved_custom_view_id] ASC),
CONSTRAINT [FK__saved_custom_view__user] FOREIGN KEY ([user_id]) REFERENCES [user] ([user_id]),
);
Я хочу убедиться, что ни один пользователь не имеет более одной строки с is_default_value, установленным в true. Следовательно, вторая вставка здесь должна быть предотвращена с помощью надлежащего ПРОВЕРКИ КОНСТРУКЦИИ.
insert into saved_custom_view values (1, 'test', 1)
insert into saved_custom_view values (1, 'test', 1)
Как написать контрольное ограничение для этого?
ALTER TABLE saved_custom_view
ADD CONSTRAINT CK_no_user_has_duplicate_default_views CHECK (
-- what goes here?
);
Или есть способ сделать уникальную проверку против нескольких столбцов?
Вы должны пометить свой вопрос соответствующей базой данных. –