Erro na logica para verificar dados repetidos

Delphi

30/12/2010

Boa noite 
Estou com um problema
Uso trigger para verificar duplicidade de valores no banco
No caso, o campo cnpj_cpf ele pode ser null...
Ao inserir ele nao gera a excessao, mas a o fazer uma edicao de certo dado ele nao deixa eu trocar o valor do cpf_cnpj gerando a excessao
oq pode ser?
AS 
BEGIN 
IF (INSERTING) THEN 
IF (EXISTS 
(SELECT FORNECEDOR, CPF_CNPJ, INSC_MUNICIPAL FROM FORNECEDOR 
WHERE ((FORNECEDOR = NEW.FORNECEDOR) OR 
(CPF_CNPJ = NEW.CPF_CNPJ) OR 
((INSC_MUNICIPAL = NEW.INSC_MUNICIPAL) AND (INSC_MUNICIPAL <> 'ISENTO'))))) THEN 
EXCEPTION FORNECEDOR_EXISTE; 
IF (UPDATING) THEN 
IF ((OLD.FORNECEDOR <> NEW.FORNECEDOR) OR 
(OLD.CPF_CNPJ <> NEW.CPF_CNPJ) OR 
((OLD.INSC_MUNICIPAL <> NEW.INSC_MUNICIPAL) AND (NEW.INSC_MUNICIPAL <> 'ISENTO'))) THEN 
IF (EXISTS 
(SELECT FORNECEDOR, CPF_CNPJ, INSC_MUNICIPAL FROM FORNECEDOR 
WHERE ((FORNECEDOR = NEW.FORNECEDOR) OR 
(CPF_CNPJ = NEW.CPF_CNPJ) OR 
((INSC_MUNICIPAL = NEW.INSC_MUNICIPAL) AND (INSC_MUNICIPAL <> 'ISENTO'))))) THEN 
EXCEPTION FORNECEDOR_EXISTE; 
END
Diego Macario

Diego Macario

Curtidas 0
POSTAR