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

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

我想使用 SQL Server 2014 Express 设置允许空值的唯一约束。我知道以前有人问过这个问题,但 5 年前有人在 post.

中问过这个问题

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

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

我正在考虑使用唯一过滤索引,但我希望尽可能避免使用该索引。

谢谢。

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

有一个ticket on Microsoft Connect for this since 2007. As suggested there and 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])
)