Em 04-04-2013 08:23, Irineu escreveu:
Contraint:
ALTER TABLE senda.ind_03_03_02_02_a1
   ADD CONSTRAINT ind_03_03_02_02_a1_id_movimento_ukey
UNIQUE(id_movimento);

Criei uma trigger no BEFORE INSERT a cada ROW fazendo um RETURN NULL ,
caso o valor já exista na tabela.

CREATE TRIGGER movimentos_baixa_bfr
   BEFORE INSERT
   ON senda.ind_03_03_02_02_a1
   FOR EACH ROW
   EXECUTE PROCEDURE senda.movimentos_baixa();

Na função trigger :
   ...
   IF EXISTS(SELECT a.id FROM senda.ind_03_03_02_02_a1 a WHERE
a.id_movimento = NEW.id_movimento) THEN
     RETURN NULL;
    END IF; ...

Continou a disparar a contraint.

Poderia passar toda a sua função?
Provavelmente você deveria colocar o código de INSERT após um ELSE, mas como tem um END IF aí não dá pra saber o que o resto de sua função faz.


[]s

__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
______________________________
FREE SOFTWARE SOLUTIONS
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a