我最近读到了一种在SQL中确保列中唯一值的方法,同时允许多个NULLS。
这是使用筛选索引完成的:
CREATE UNIQUE INDEX indexName ON tableName(columns) INCLUDE includeColumns
WHERE columnName IS NOT NULL
有人可以解释一下它是如何工作的吗?
是否在列上创建了UNIQUE约束?
答案 0 :(得分:0)
回答您的第一个问题:过滤索引后,任何不修复where子句中条件的内容都会被排除在索引之外。
如果索引是唯一的,则仅对符合where子句中条件的数据强制执行唯一性。
回答第二个问题:在Sql server中,通过在引擎盖下创建唯一索引来实现唯一约束,因此它们之间确实没有太大区别。在任何情况下,唯一性都在索引上强制执行,而不是直接在表列上强制执行。