我有一个 SQL Server 2012 数据库。我的表名为REFERENCE有一个名为LOCATOR.
我的用户正在输入数据,但有时他们会输入两个不同的行LOCATOR。有没有办法让我创建一个只有在LOCATORis not null 时才会出现的错误?
我有一个 SQL Server 2012 数据库。我的表名为REFERENCE有一个名为LOCATOR.
我的用户正在输入数据,但有时他们会输入两个不同的行LOCATOR。有没有办法让我创建一个只有在LOCATORis 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