Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O valor do campo deve ser exclusivo, a menos que seja NULL


Eu crio uma visão com um índice que ignora os nulos através da cláusula where... ou seja. se você inserir null na tabela, a exibição não se importará, mas se você inserir um valor não nulo, a exibição aplicará a restrição.
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

Então agora minha tabela de equipamentos tem uma coluna asset_tag que permite vários nulos, mas apenas valores não nulos exclusivos.

Observação:se estiver usando o mssql 2000, você precisará "SET ARITHABORT ON " imediatamente antes de qualquer inserção, atualização ou exclusão ser executada na tabela. Tenho certeza de que isso não é necessário no mssql 2005 e superior.