Erro na logica para verificar dados repetidos
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
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
Curtidas 0