关于sql server:可空列的唯一约束

uniqe constraint on a nullable column

本问题已经有最佳答案,请猛点这里访问。

新年快乐,我在这个网站上的第一个问题,请帮忙

我有一个名为dbo的表。它有一个名为Person_NCID的列,这是一个可空列,但我想在非空值上创建一个唯一约束。 当我创建一个uniqe约束时,它现在返回一个错误,因为我在列中有多个空值。 我应该使用用户定义的函数来创建唯一约束吗?


您需要在此列上使用筛选索引,该索引将忽略表中的任何空值。

尝试类似的东西

1
2
CREATE UNIQUE INDEX IX_Person_Person_NCID ON dbo.Person(Person_NCID)
WHERE Person_NCID IS NOT NULL

这实际上将在非空值上创建唯一约束。


创建唯一的筛选索引(SQL Server 2008以上版本):

1
2
3
CREATE UNIQUE NONCLUSTERED INDEX NC_Person_Person_NCID
ON dbo.Person(Person_NCID)
WHERE Person_NCID IS NOT NULL;