sql - 如何在 NULL 列上创建唯一索引?

标签 sql sql-server indexing constraints unique

我使用的是 SQL Server 2005。我希望将列中的值限制为唯一,同时允许 NULL。

我当前的解决方案涉及 View 上的唯一索引,如下所示:

CREATE VIEW vw_unq WITH SCHEMABINDING AS
    SELECT Column1
      FROM MyTable
     WHERE Column1 IS NOT NULL

CREATE UNIQUE CLUSTERED INDEX unq_idx ON vw_unq (Column1)

还有更好的想法吗?

最佳答案

使用 SQL Server 2008,您可以 create a filtered index .

CREATE UNIQUE INDEX AK_MyTable_Column1 ON MyTable (Column1) WHERE Column1 IS NOT NULL

另一个选项是检查唯一性的触发器,但这可能会影响性能。

关于sql - 如何在 NULL 列上创建唯一索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/191421/

相关文章:

c# - 如何制作包含子对象(如 SQL 外连接)的 LINQ Select?

mysql - 可以将 MySQL 索引命名为与其索引的列相同的名称吗?

python - 在Python中比较两个数据帧值

sql - 过滤具有相同 ID 的前一行具有特定值的数据

Mysql 计数与条件或大小写不同

mysql - SQL中如何添加主键?

sql-server - 使用来自多个表的数据的 SQL 插入

sql - TCP 提供程序 : The semaphore timeout period has expired

numpy - 为什么某些维度没有显示在输出中,即使根据索引它们应该显示?

mysql - 选择基于邮政编码的记录,它是 MySQL 中的半径、纬度和经度