Выполнение уникальных и множественных NULLS для столбца в таблице

Как принудительно применять уникальные значения, а также несколько NULLS для столбца таблицы в SQL Server?

Из этого ответа :

В SQL Server 2008 вы можете определить уникальный отфильтрованный индекс на основе предиката, который исключает NULL:

CREATE UNIQUE NONCLUSTERED INDEX idx_yourcolumn_notnull ON YourTable(yourcolumn) WHERE yourcolumn IS NOT NULL; 

В более ранних версиях вы можете прибегнуть к VIEWS с предикатом NOT NULL для принудительного применения ограничения.

Другие ответы касаются фильтрованных индексов и триггеров.

Отфильтрованные индексы – это только SQL Server 2008. Для более ранних версий и предотвращения кода (триггера):

  • Либо вы можете использовать индексированный вид с фильтром IS NOT NULL. Это подход DRI

  • Или вы можете иметь вычисленный столбец с ISNULL(TheColumn, -PKIdentityCol) (или другое значение, основанное на PK), которое также является DRI

Interesting Posts

Преобразование Varchar во время SQL Server

Недопустимая ошибка имени столбца при создании хранимой процедуры

Ошибка производительности SQL Server OR

Вставка данных в временную таблицу из открытого запроса

Каскадное удаление объектов Entity Framework

Поиск в SQL Server Собственные имена Полный текстовый индекс против LIKE + SOUNDEX

Вычисление нового столбца с использованием двух других столбцов путем учета фактора затухания времени

Почему существует дублирование ссылок в кодовом EntityFramework?

Как предотвратить SQL Server, возвращающий 3 набора результатов?

SQL Server – ограничение представления баз данных на основе логина

Запустите приложение C # .NET Winform, которое использует SQL Server как базу данных, только помещая файлы .mdf на пользовательский ПК

Найти записи для parent_id и обновить некоторые поля

Есть ли какие-либо проблемы, связанные с переходом из ntext в nvarchar (max)

Сохранять группу на одной странице с помощью служб Reporting Services

TRY … CATCH, похоже, не работает

Давайте будем гением компьютера.