Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Der Feldwert muss eindeutig sein, es sei denn, er ist NULL

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.