我想使用 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])
)
我想使用 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])
)