我想使用 SQL Server 2014 Express 设置一个允许空值的唯一约束。我知道以前有人问过这个问题,但 5 年前在这篇文章中有人问过这个问题。
我才刚刚开始学习 SQL,所以我想看看自 5 年前以来是否有任何其他选项可用。
我正在考虑使用唯一过滤索引,但我想尽可能避免使用此索引。
谢谢你。
我想使用 SQL Server 2014 Express 设置一个允许空值的唯一约束。我知道以前有人问过这个问题,但 5 年前在这篇文章中有人问过这个问题。
我才刚刚开始学习 SQL,所以我想看看自 5 年前以来是否有任何其他选项可用。
我正在考虑使用唯一过滤索引,但我想尽可能避免使用此索引。
谢谢你。
您链接的问题的答案仍然适用并且是正确的,到目前为止似乎没有其他方法。
自 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])
)