Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1244
Assunto : SQL Server
Titulo: Permitir nulls em uma coluna de valores unicos

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Para criar uma coluna com valores únicos podemos utilizar uma constraint de unique ou um indice unique, o que ao final é praticamente o mesmo, já que a constraint gera a criação de um indice unique.

Uma coluna criada desta forma pode aceitar valores nulos, porém como é definida como unique vai aceitar apenas um registro com valor nulo, o que não é muito. Como fazer para que uma coluna unique possa aceitar valores nulos normalmente ?

A solução é engenhosamente simples: Podemos criar um indice unique com filtro, excluindo do indice os valores nulos, o que fará com que a regra de unique seja aplicada apenas aos valores não nulos da coluna.

Veja como se comporta uma coluna unique tradicional:

create table testeunique
(id int identity(1,1),
valor varchar(30) null unique)
go

insert into testeunique values ('valor1')
insert into testeunique values (null)
go

--Ambas falham, são duplicações
insert into testeunique values ('valor1')
go
insert into testeunique values (null)
go

drop table testeunique


Agora o mesmo teste, mas utilizando um indice unique filtrado:

create table testeunique
(id int identity(1,1),
valor varchar(30) null)
go

create unique index indunico on testeunique(valor)
where valor is not null
go


insert into testeunique values ('valor1')
insert into testeunique values (null)

--Falha, valor1 não pode ser duplicado
insert into testeunique values ('valor1')
go
-- Funciona, nulls podem ser duplicados
insert into testeunique values (null)


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br