furo na verificação if exists (violação de chave única)

21/09/2007

0

tenho uma tabela de telefones com uma chave única envolvendo os campos (todos numéricos, não permitidos valores nulos):

[color=blue:a0e6b7e61d].. UNIQUE ( CPF , DDD , FONE , ID_TIPOFONE )[/color:a0e6b7e61d]

tenho uma procedure onde checo a existencia do fone para inserir ou atualizar

[color=blue:a0e6b7e61d]IF (EXISTS(SELECT id_fone FROM tb_fone WHERE cpf = @cpf and ddd = @ddd and fone = @fone and id_tipofone = @id_tipofone))
begin
[ update ]
end
else
begin
[insert]
end;[/color:a0e6b7e61d]



estou inserindo um lote de dados a partir da importação de um arquivo texto (campos separados por pipes ´|´) e passo o argumento para a procedure como varchar mas exlcuindo campos em brancos, fora o autocast q o próprio sqlserver faz eliminando espaços

mesmo assim, dá o erro de duplicidade, isto é, algo está deixando q o if exists deixe passar.

já fiz zilhões de testes unitários (inclusive com os campos onde foram encontradas duplicadades) e tudo funciona.. só começar a importar o lote e dá o problema

alguém tem idéia do q pode ser?

obrigado
abs


Pgnt

Pgnt

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar