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

时间:2013-10-05 13:57:13

标签: sql-server sql-server-2012

我有一个SQL Server 2012数据库。我的名为REFERENCE的表格中有一个名为LOCATOR的列。

我的用户正在输入数据,但有时他们会输入两个具有相同LOCATOR的不同行。有没有办法可以创建一个错误,如果LOCATOR不为空,则会出现 错误?

1 个答案:

答案 0 :(得分: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 ;

最低测试时间:SQL-Fiddle