Olá 2008/10/27 tetraetila(R) <[EMAIL PROTECTED]>: > Olá Pessoal ! > > Tenho uma aplicação que funciona no Firebird e bloqueio um determinado > registro com o seguinte select: > > select * from test_table where sr_recno = 10 for update with lock. > > Quando um outro usuário tenta acessar este mesmo registro verifico o estado > dele e ele estando bloqueado, retornando True, de dentro da minha aplicação > emito > um alerta para este usuário, tipo: Registro indisponível!, etc. > > Ok! > > No Postgres eu consigo bloquear o registro também com o select: > > begin; > select * from table_test where sr_recno = 10 for update > > Só que ele não me retorna imediatamente, fica aguardando o término da > transação e o usuário fica travado, waiting.
Correto. > > Gostaria de saber se alguém sabe algum modo de ele não ficar aguardando, > verificando o registro se estiver bloqueado retorne False imediatamente. > Seria uma função. > Como assim não ficar aguardando? O registro ficará bloqueado até que a sua transação seja efeitava ou um rollback seja executado. > Por exemplo se eu der um > > select * from pg_stat_activity where waiting = 't' and current_query = > 'minha sentença exemplo...' > > Ele irá me retornar True, porém preciso capturar este retorno para tratar na > minha aplicação. Ou uma função que faça isto, capture o retorno no BD. Não entendi muito bem. Você quer fazer uma função que retorne as consultas que estão bloqueadas e consiga trata-las na aplicação é isso? > > Qualquer ajuda será bem vinda, meu muito obrigado! > > Adilson Nunes > Divinópolis - MG > > > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > []s -- João Paulo www.dextra.com.br/postgres PostgreSQL _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
