有没有办法确保字段的内容是NULL或UNIQUE

2 sql-server sql-server-2012

我有一个SQL Server 2012数据库.我调用的表REFERENCE有一个名为的列LOCATOR.

我的用户正在输入数据,但有时他们会输入两个不同的行LOCATOR.有没有办法让我创建一个错误,只有当LOCATOR它不为空时才出现?

ype*_*eᵀᴹ 6

这是UNIQUE约束所做的(在大多数DBMS中),不允许列中具有相同值的2行 - 而忽略NULL值.

问题是SQL-Server以不同于其他DBMS的方式实现了唯一约束,并且NULL在列上定义了唯一约束或索引时不允许多行.

解决方案是使用部分索引:

CREATE UNIQUE INDEX Locator_UQ                -- name of the index
ON Reference (Locator)
WHERE Locator IS NOT NULL ;
Run Code Online (Sandbox Code Playgroud)

最小的测试:SQL-Fiddle