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

Responder a