可空列的唯一约束

时间:2015-01-01 04:54:18

标签: sql-server tsql sql-server-2008-r2

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

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

2 个答案:

答案 0 :(得分:1)

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

尝试类似

的内容
CREATE UNIQUE INDEX IX_Person_Person_NCID ON dbo.Person(Person_NCID)
WHERE Person_NCID IS NOT NULL

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

答案 1 :(得分:0)

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

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