2013-02-18 3 views
0

У меня есть таблица со многими записями. Столбец X имеет значение NULL, и в этом столбце много записей NULL. Могу ли я создать UNIQUE некластеризованный индекс в этом столбце? Разве эти нулевые значения не нарушают единственное ограничение?Уникальный индекс в столбце с нулевым значением

+0

Что произошло, когда вы попробовали? –

+0

здесь, [>> Нажмите здесь для DEMO <<] (http://www.sqlfiddle.com/#!3/87e2b) * раскомментируйте * последнюю строку и снова постройте схему. посмотрим, что произойдет. –

+0

[Как создать уникальный индекс в столбце NULL?] (Http://stackoverflow.com/questions/191421/how-to-create-a-unique-index-on-a-null-column?rq=1) – peterm

ответ

6

Если у вас нет SQL Server или новее - вы можете настроить отфильтрованный уникальный индекс, чтобы исключить/игнорировать все значения NULL.

CREATE UNIQUE NONCLUSTERED INDEX uixYourIndexName 
ON dbo.YourTableName(YourColumnName) 
WHERE YourColumnName IS NOT NULL 

Это было по существу «отфильтровывать» все NULL значения - не включая их в индекс на всех. Любой запрос, который использует тот же оператор WHERE, может использовать этот отфильтрованный индекс для поиска этих строк.

без фильтрованного индекса, можно не создать уникальный индекс на столбце, так как с уникальным индексом, вы разрешается иметь только одну строку, которая имеет NULL в этом столбце.

Смежные вопросы