我有一个 SQL Server 2012 数据库。我的表名为REFERENCE
有一个名为LOCATOR
.
我的用户正在输入数据,但有时他们会输入两个不同的行LOCATOR
。有没有办法让我创建一个只有在LOCATOR
is not null 时才会出现的错误?
我有一个 SQL Server 2012 数据库。我的表名为REFERENCE
有一个名为LOCATOR
.
我的用户正在输入数据,但有时他们会输入两个不同的行LOCATOR
。有没有办法让我创建一个只有在LOCATOR
is not null 时才会出现的错误?
这就是UNIQUE
约束的作用(在大多数 DBMS 中),不允许列中具有相同值的 2 行 - 同时忽略NULL
值。
NULL
问题是 SQL-Server 实现的唯一约束与其他 DBMS 不同,并且当在列上定义唯一约束或索引时,不允许有多个行。
解决方案是使用部分索引:
CREATE UNIQUE INDEX Locator_UQ -- name of the index
ON Reference (Locator)
WHERE Locator IS NOT NULL ;
最小测试:SQL-Fiddle