SQL Server
позволяет создавать UNIQUE
индексы, которые принимают значения NULL
, хотя это требует небольшой хитрости.
Создайте представление, которое выбирает только не NULL
столбцы, и создайте UNIQUE INDEX
в представлении:
CREATE VIEW myview
AS
SELECT *
FROM mytable
WHERE mycolumn IS NOT NULL
CREATE UNIQUE INDEX ux_myview_mycolumn ON myview (mycolumn)
Обратите внимание, что вам нужно выполнить INSERT
и UPDATE
для представления вместо таблицы.
Вы можете сделать это с помощью триггера INSTEAD OF
:
CREATE TRIGGER trg_mytable_insert ON mytable
INSTEAD OF INSERT
AS
BEGIN
INSERT
INTO myview
SELECT *
FROM inserted
END