0

Я хочу установить уникальное ограничение, которое допускает использование NULL с использованием SQL Server 2014 Express. Я знаю, что это было задано раньше, но было спрошено 5 лет назад в этом посте.Я хочу установить уникальное ограничение, которое допускает ошибки с использованием SQL Server 2014 Express

How do I create a unique constraint that also allows nulls?

Я только начинаю изучать SQL, поэтому я хочу, чтобы увидеть, если какие-либо другие варианты стали доступны с 5 лет назад.

Я согласен с использованием уникального фильтрованного индекса, но я бы хотел, чтобы избежать использования этого индекса, если это возможно.

спасибо.

+0

Уникальные ограничения также являются индексами. (Implicit.) – jarlh

+0

Я просто хотел подтвердить, что предыдущий ответ правильный, так как прошло много времени с тех пор, как его спросили. Я принял решение Бариса ниже. – frustrationmultiplied

ответ

0

Ответ (ы) на связанный с вами вопрос все еще применяются и являются правильными, и пока нет другого пути.

Для этого с 2007 года существует ticket on Microsoft Connect. Как предложено там и here, ваши лучшие варианты - использовать отфильтрованный индекс или вычисленный столбец, например.

CREATE TABLE [Orders] (
    [OrderId] INT IDENTITY(1,1) NOT NULL, 
    [TrackingId] varchar(11) NULL, 
    ... 
    [TrackingIdUnique] AS (
     CASE WHEN [TrackingId] IS NULL 
     THEN '#' + cast([OrderId] as varchar(12)) 
     ELSE [TrackingId_Unique] END 
), 
    CONSTRAINT [UQ_TrackingIdUnique] UNIQUE ([TrackingIdUnique]) 
) 
+0

Спасибо Барису за подтверждение того, что предыдущий ответ по-прежнему правильный. – frustrationmultiplied

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

  • Нет связанных вопросов^_^