新年快乐,我在本网站上的第一个问题,请帮助
我有一个名为dbo的表。它有一个名为Person_NCID的列,这是一个可以为空的列,但我想在非空值上创建一个唯一约束。当我创建一个uniqe约束时,它现在返回一个错误,因为我在列中有多个空值。我应该使用用户定义的函数来创建唯一约束吗?
答案 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;