Jeg opretter en visning med et indeks, der ignorerer nullerne gennem where-klausulen...dvs. hvis du indsætter null i tabellen, er visningen ligeglad, men hvis du indsætter en ikke-nul værdi, vil visningen håndhæve begrænsningen.
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
Så nu har min udstyrstabel en asset_tag-kolonne, der tillader flere nuller, men kun unikke ikke-nullværdier.
Bemærk:Hvis du bruger mssql 2000, skal du "INDSTILLE ARITHABORT TIL " lige før nogen indsættelse, opdatering eller sletning udføres på bordet. Temmelig sikker på, at dette ikke er påkrævet på mssql 2005 og nyere.