sql >> Base de Datos >  >> RDS >> Sqlserver

El valor del campo debe ser único a menos que sea NULL

Creo una vista con un índice que ignora los valores nulos a través de la cláusula where... es decir si inserta un valor nulo en la tabla, a la vista no le importa, pero si inserta un valor no nulo, la vista aplicará la restricción.

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

Así que ahora mi tabla de equipos tiene una columna asset_tag que permite múltiples valores nulos pero solo valores únicos no nulos.

Nota:si utiliza mssql 2000, deberá "CONFIGURAR ARITHABORT " justo antes de que se realice cualquier inserción, actualización o eliminación en la tabla. Bastante seguro de que esto no es necesario en mssql 2005 y versiones posteriores.