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.

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.

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.

Qualquer ajuda será bem vinda, meu muito obrigado!

Adilson Nunes
Divinópolis - MG




_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a