2013/2/21 Nelson Luiz Gonzaga <[email protected]> > Ola gente, > Olha o meu cenario: > Tenho uma funcao no meu banco aqui da empresa que atualiza diversas > tabelas demorando uns 12 segundos para executar. > Como estas tabelas sao apenas de consulta e nada muito critico para o > funcionamento, pensei em atualizar isso em background e liberar o usuario > de imediato. > Hoje uso o cron do linux para abrir uma conexao e executar a > function(tendo ou nao alguma coisa a fazer). > > Meu problema: > Como faco para o postgresql executar esta funcao ao receber um notify? > Tenho que rodar um programinha com uma rotina em loop o tempo todo? > Ou o postgresql intercepta de alguma forma o notify e executa minha > function a cada notify? >
Era o que você pensou mesmo, o PostgreSQL não irá "capturar" o notify e executar uma função, você terá que criar um programa que permaneça num loop com o LISTEN para receber a notificação. Tem alguns exemplos/métodos na documentação: [1] e [2] - Usando o LISTEN com a libpq em C [3] - Uma solução mais postgres/psql usando a contrib dblink Qual a linguagem que você usa? Talvez o driver dá suporte (creio que todos dêem, mas não tenho certeza). [1] http://www.postgresql.org/docs/9.2/static/libpq-example.html#LIBPQ-EXAMPLE-2 [2] http://www.postgresql.org/docs/9.2/static/libpq-notify.html [3] http://www.postgresql.org/docs/9.2/static/contrib-dblink-get-notify.html Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
