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

Responder a