为表中的列强制执行唯一且多个NULLS

时间:2011-05-15 18:57:12

标签: sql sql-server tsql

如何为SQL Server中的表的列强制执行唯一值以及多个NULLS?

2 个答案:

答案 0 :(得分:4)

来自this answer

  

SQL Server 2008 中,您可以定义   基于a的唯一过滤索引   谓词排除NULL:

CREATE UNIQUE NONCLUSTERED INDEX idx_yourcolumn_notnull
ON YourTable(yourcolumn)
WHERE yourcolumn IS NOT NULL;
     

在早期版本中,您可以诉诸   具有NOT NULL谓词的VIEWS   强制执行约束。

答案 1 :(得分:3)

其他答案提到过滤后的索引和触发器。

过滤的索引仅限SQL Server 2008。对于早期版本和避免代码(触发器):

  • 您可以使用带有IS NOT NULL过滤器的索引视图。这是DRI方法

  • 或者您可以拥有一个ISNULL(TheColumn, -PKIdentityCol)的计算列(或基于PK的其他值),这也是DRI