Sql server 具有唯一索引的列中有多个空值

Sql server 具有唯一索引的列中有多个空值,sql-server,Sql Server,我们有一个表,它在一个可以接受空值的列上有一个唯一的索引。问题是我们发现这个结构只能接受一个空值的行。如果我们试图添加第二行的空值,我们会得到一个错误,如。 “无法在对象中插入重复的键行…” 我们可以做些什么来保持此列上的索引以及向多行添加空值的功能吗?是的,您可以使用筛选索引来支持此功能。只需删除现有索引,然后像这样创建新索引 CREATE UNIQUE INDEX Index_Name ON TableName(ColumnName) WHERE ColumnName IS NOT NULL

我们有一个表,它在一个可以接受空值的列上有一个唯一的索引。问题是我们发现这个结构只能接受一个空值的行。如果我们试图添加第二行的空值,我们会得到一个错误,如。 “无法在对象中插入重复的键行…”


我们可以做些什么来保持此列上的索引以及向多行添加空值的功能吗?

是的,您可以使用筛选索引来支持此功能。只需删除现有索引,然后像这样创建新索引

CREATE UNIQUE INDEX Index_Name ON TableName(ColumnName)
WHERE ColumnName IS NOT NULL
这将允许您拥有空值的副本。如果你需要更多的细节,这里有一篇深入的文章


删除
唯一的
索引。索引永远不应该为空,为什么需要为空?@KevinA:你是什么意思,如果我有一个可以为空的列,我就不应该在上面有索引?为什么不呢?