Array
(
)

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

Pgnt
   - 21 set 2007

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

.. UNIQUE ( CPF , DDD , FONE , ID_TIPOFONE )

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

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;

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