Vytvořím pohled s indexem, který ignoruje hodnoty null prostřednictvím klauzule where...tj. pokud do tabulky vložíte hodnotu null, zobrazení je to jedno, ale pokud vložíte hodnotu bez hodnoty null, zobrazení vynutí omezení.
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
Takže moje tabulka vybavení má nyní sloupec asset_tag, který umožňuje více hodnot null, ale pouze jedinečné nenulové hodnoty.
Poznámka:Pokud používáte mssql 2000, budete muset "NASTAVIT ARITHABORT ZAPNUTO " těsně předtím, než se v tabulce provede jakékoli vložení, aktualizace nebo odstranění. Určitě to není vyžadováno na mssql 2005 a novějších.