Pelo que entendi você está dando um SELECT na mesma tabela que disparou a
trigger.
Mas, como está usando AFTER, o registro já foi excluído, logo o SELECT não
vai achá-lo.
A solução no seu caso seria usar BEFORE ao invés do AFTER, mas veja se isso
não implica em algum outro problema no restante da função.

Att.
--
Matheus de Oliveira

Bacharelado em Ciências de Computação
Laboratório de Computação de Alto Desempenho -
LCAD<http://www.lcad.icmc.usp.br/>
Instituto de Ciências Matemáticas e de Computação -
ICMC<http://www.icmc.usp.br/>
Universidade de São Paulo - USP <http://www.sc.usp.br/>




2012/2/8 Tulio Santos <tuliogust...@yahoo.com.br>

> A trigger esta deifinida para 3 tabelas que tenho que possuem o campo
> idrep_eventon1...
>
> postei aqui apenas o inicio da function, pois é onde estou vendo o
> problema...
> mas se preferir posso enviar completa..
>
> Att,
> Tulio
>
>   ------------------------------
> *De:* Osvaldo Kussama <osvaldo.kuss...@gmail.com>
> *Para:* Tulio Santos <tuliogust...@yahoo.com.br>; Comunidade PostgreSQL
> Brasileira <pgbr-geral@listas.postgresql.org.br>
> *Enviadas:* Quarta-feira, 8 de Fevereiro de 2012 13:20
> *Assunto:* Re: [pgbr-geral] Trigger/Function: Delete não esta guardando
> variavel
>
> Em 08/02/12, Tulio Santos<tuliogust...@yahoo.com.br> escreveu:
> > Boa tarde,
> > Criei uma trigger AFTER que é ativada em caso de UPDATE, INSERT ou
> DELETE.
> > Ao identificar a operação da Trigger como Delete, estou com problemas
> para
> > guardar os resultados nas variaveis.
> > Não entendo o motivo, pois nos casos como UPDATE ou INSERT é utilizado a
> > mesma consulta, porem com NEW ao inves de OLD.
> > Coloquei RAISE EXCEPTION para encontrar quais variaveis nao estavam sendo
> > registradas, conforme abaixo.
> >
> >
> >    IF (TG_OP = 'DELETE') THEN
> >      select distinct mte.idrepesportesmt, mte.estado from rep_eventon1 n1
> >      inner join repesportesmt mte on mte.idrepesportesmt =
> > n1.idrepesportesmt
> >      where n1.idrep_eventon1 = OLD.idrep_eventon1 INTO rec;
> >
> >      select n1.idrepesportesmt, n1.idprog,
> >          case when (pm.codapresentacao in (2,3,4)) then true else false
> end
> > as reprise from rep_eventon1 n1
> >      inner join cli_progsmidia pm ON pm.idprog = n1.idprog
> >      where n1.idrep_eventon1 = OLD.idrep_eventon1 INTO rec_reprise;
> >
> >
> >      // a variavel OLD é exibida normalmente, mas as outras retornam NULL
> >
> >
> >      RAISE EXCEPTION 'teste variaveis (%),(%),(%)',
> > OLD.idrep_eventon1,rec.idrepesportesmt, rec_reprise.reprise;
> >
> >    ELSE
> >      select distinct mte.idrepesportesmt, mte.estado from rep_eventon1 n1
> >      inner join repesportesmt mte on mte.idrepesportesmt =
> > n1.idrepesportesmt
> >      where n1.idrep_eventon1 = NEW.idrep_eventon1 INTO rec;
> >
> >      select n1.idrepesportesmt, n1.idprog,
> >          case when (pm.codapresentacao in (2,3,4)) then true else false
> end
> > as reprise from rep_eventon1 n1
> >      inner join cli_progsmidia pm ON pm.idprog = n1.idprog
> >      where n1.idrep_eventon1 = new.idrep_eventon1 INTO rec_reprise;
> >
> >
> >      // todas as variaves exibem seus resultados normalmente
> >
> >      RAISE EXCEPTION 'teste variaveis (%),(%),(%)', NEW.idrep_eventon1,
> > rec.idrepesportesmt, rec_reprise.reprise;
> >
> >    END IF;
> >
> >
>
>
>
> E este gatilho está definido em qual tabela?
>
> Osvaldo
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a