Pat*_*nza 32 sql-server indexing
我有一个表,我需要强制列具有唯一值.此列必须是可空的,并且应该允许业务逻辑使用多个NULL值,而其他重复值则不允许.
SQL Server UNIQUE约束在这种情况下并不好,因为它将NULL视为常规值,因此它将拒绝重复的NULL.
目前,BLL授予了价值唯一性,所以我不是在寻找一个肮脏的黑客来使其发挥作用.我只是想知道是否有一个干净的解决方案来在DB中强制执行此约束.
是的,我知道我可以写一个触发器来做到这一点:触发器是唯一的解决方案吗?(或者最好的解决方案呢?)
Lor*_*nVS 53
如果您使用的是SQL Server 2008(不适用于早期版本),则存在过滤索引的概念.您可以在表的已过滤子集上创建索引.
CREATE UNIQUE INDEX indexName ON tableName(columns) INCLUDE includeColumns
WHERE columnName IS NOT NULL
Run Code Online (Sandbox Code Playgroud)