Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Il valore del campo deve essere univoco a meno che non sia NULL

Creo una vista con un indice che ignora i valori null tramite la clausola where... cioè se inserisci null nella tabella alla vista non interessa ma se inserisci un valore non nullo la vista imporrà il vincolo.

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

Quindi ora la mia tabella dell'attrezzatura ha una colonna asset_tag che consente più valori nulli ma solo valori non nulli univoci.

Nota:se utilizzi mssql 2000, dovrai "IMPOSTARE ARITHABORT ON " subito prima che qualsiasi inserimento, aggiornamento o eliminazione venga eseguito sulla tabella. Abbastanza sicuro che questo non sia richiesto su mssql 2005 e versioni successive.