2

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

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

4

1 回答 1

6

这就是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

于 2013-10-05T14:03:14.080 回答