SQL中具有多个NULL值的唯一约束

时间:2016-03-01 06:00:53

标签: sql sql-server unique-constraint

我最近读到了一种在SQL中确保列中唯一值的方法,同时允许多个NULLS。

这是使用筛选索引完成的:

CREATE UNIQUE INDEX indexName ON tableName(columns) INCLUDE includeColumns 
WHERE columnName IS NOT NULL

有人可以解释一下它是如何工作的吗?

是否在列上创建了UNIQUE约束?

1 个答案:

答案 0 :(得分:0)

回答您的第一个问题:过滤索引后,任何不修复where子句中条件的内容都会被排除在索引之外。
如果索引是唯一的,则仅对符合where子句中条件的数据强制执行唯一性。

回答第二个问题:在Sql server中,通过在引擎盖下创建唯一索引来实现唯一约束,因此它们之间确实没有太大区别。在任何情况下,唯一性都在索引上强制执行,而不是直接在表列上强制执行。