0

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

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

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

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

谢谢你。

4

1 回答 1

0

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

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

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])
)
于 2015-02-26T13:00:56.077 回答