我有一个SQL Server 2012数据库。我的名为REFERENCE
的表格中有一个名为LOCATOR
的列。
我的用户正在输入数据,但有时他们会输入两个具有相同LOCATOR
的不同行。有没有办法可以创建一个错误,如果LOCATOR
不为空,则会出现 错误?
答案 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