Създавам изглед с индекс an, който игнорира нулите чрез клаузата where... т.е. ако вмъкнете null в таблицата, изгледът не се интересува, но ако вмъкнете ненулева стойност, изгледът ще наложи ограничението.
create view dbo.UniqueAssetTag with schemabinding
as
select asset_tag
from dbo.equipment
where asset_tag is not null
GO
create unique clustered index ix_UniqueAssetTag
on UniqueAssetTag(asset_tag)
GO
Така че сега моята таблица с оборудване има колона asset_tag, която позволява множество нули, но само уникални ненулеви стойности.
Забележка:Ако използвате mssql 2000, ще трябва да "НАСТРОЙТЕ ARITHABORT ON " точно преди каквото и да е вмъкване, актуализиране или изтриване на таблицата. Със сигурност това не се изисква на mssql 2005 и по-нови.