Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

La valeur du champ doit être unique sauf si elle est NULL

Je crée une vue avec l'index an qui ignore les valeurs nulles via la clause where ... c'est-à-dire si vous insérez null dans la table, la vue ne s'en soucie pas, mais si vous insérez une valeur non nulle, la vue appliquera la contrainte.

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

Alors maintenant, ma table d'équipement a une colonne asset_tag qui autorise plusieurs valeurs nulles mais uniquement des valeurs non nulles uniques.

Remarque :Si vous utilisez mssql 2000, vous devrez "SET ARITHABORT ON " juste avant toute insertion, mise à jour ou suppression sur la table. Je suis sûr que cela n'est pas requis sur mssql 2005 et plus.