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