Criei uma Trigger em uma determinada tabela para que o campo cpf não seja cadastrado Duas vezes (A não ser em branco)...
Ela funciona normalmento no update e no insert, mas no update só funciona se eu colocar no where a primary key da tabela...
Quando eu tento atualizar a tabela geral (sem where), a query trava !
Alguém tem alguma idéia...
o campo cpf é varchar(11) indexado ...
A Trigger :
candidato_cpf_up BEFORE UPDATE ON public.candidato FOR EACH ROW EXECUTE PROCEDURE public.const_cpf_update();
A Funcao :
DECLARE
ncpf varchar;
id_cand integer;
res RECORD;
BEGIN
IF NEW.cpf != OLD.cpf THEN
ncpf:=NEW.cpf;
id_cand:= OLD.id_candidato;
IF ncpf != '' AND NOT ncpf IS NULL THEN
SELECT INTO res COUNT(cpf) as num_cpf FROM candidato WHERE cpf = ncpf AND id_candidato != id_cand;
IF res.num_cpf > 0 THEN
RAISE EXCEPTION 'CPF ja cadastrado %',ncpf;
ELSE
RETURN NEW;
END IF;
ELSE
RETURN NEW;
END IF;
ELSE
RETURN NEW;
END IF;
END;
Bom é isso ai !!
Vlw Lista...
Thiago Risso
Web Developer
_______________________________________________ Grupo de Usuários do PostgreSQL no Brasil http://www.postgresql.org.br
