Amigos,

Tive o seguinte problema:

Criei uma chave de unicidade numa tabela, quando ela recebe um INSERT estava ocasionando um violação dessa constraint,
mas o valor que ocasionou a violação não se encontra na tabela.

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.

Removi a chave de unicidade para ver o estava sendo incluído.

Para minha surpresa, não foi incluido nenhum valor duplicado.

Alguém já vivenciou essa situação?

--
Irineu Raymundo
Programador/Consultor Técnico
Senda Engenharia de Dados Ltda.

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a