我想设置一个允许使用SQL Server 2014 Express的空值的唯一约束。我知道之前已经问过这个问题,但5年前就在这篇文章中被问过了。
How do I create a unique constraint that also allows nulls?
我只是开始学习SQL所以我想看看自5年前以来是否有其他选项可供使用。
我正在使用Unique Filtered Index,但我希望尽可能避免使用此索引。
谢谢。
答案 0 :(得分: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])
)