Ich erstelle eine Ansicht mit einem Index, der die Nullen durch die Where-Klausel ignoriert ... dh Wenn Sie null in die Tabelle einfügen, ist es der Ansicht egal, aber wenn Sie einen Nicht-Null-Wert einfügen, erzwingt die Ansicht die Einschränkung.
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
Also hat meine Ausrüstungstabelle jetzt eine Asset_tag-Spalte, die mehrere Nullen, aber nur eindeutige Nicht-Null-Werte zulässt.
Hinweis:Wenn Sie mssql 2000 verwenden, müssen Sie "ARITHABORT EINSCHALTEN " unmittelbar bevor ein Einfügen, Aktualisieren oder Löschen in der Tabelle ausgeführt wird. Ziemlich sicher, dass dies für mssql 2005 und höher nicht erforderlich ist.