我想设置一个唯一约束,允许使用SQL Server 2014 Express的空值

I want to set a Unique Constraint that allows nulls using SQL Server 2014 Express

本问题已经有最佳答案,请猛点这里访问。

我想设置一个唯一的约束,允许使用SQL Server 2014 Express的空值。 我知道之前有人问过这个问题但5年前在这篇文章中被问过。

如何创建一个也允许空值的唯一约束?

我只是开始学习SQL所以我想看看自5年前以来是否有其他选项可用。

我正在使用Unique Filtered Index,但我希望尽可能避免使用此索引。

谢谢。


您链接的问题的答案仍然适用并且是正确的,到目前为止似乎没有其他方法。

自2007年以来,Microsoft Connect上就有一张票据。正如那里建议的那样,您最好的选择是使用过滤索引或计算列,例如:

1
2
3
4
5
6
7
8
9
10
11
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])
)