Em SQLServer, fiz um teste parecido com o seu.

Qdo vc faz um lock de registro ou trabela,  ele nao bloqueia a leitura 
de outras sessoes, ate' que a
sessao de posse do lock, faça um update de algum dado do registro.

Para bloquear o select que vc fez, faca em seguida um update com a mesmo 
where assim :

  db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
  update tab_material set codg_serma='10' where codg_serma='10' ;

teste la e depois envie o resultado.

até mais.



MIGUEL JOSE DE LIMA wrote:
> Caros, participantes...
> Sou iniciante neste mundo do PostgreSQL.
> Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
> mas me incubiram de fazer testes no PostgreSQL para bloquer registros. 
> Então...
>
> Estou precisando de ajuda para bloquear a leitura de um registro, ou 
> seja,
> em um cenário como:
>  "Atualização de Estoque de um Material" :
> Antes de atualizar o estoque do material selecionado eu preciso 
> bloquear o registro para que
> nenhuma outra sessão possa obter o dado do registro.
> PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
> Estou usando o PostgreSQL 8.3.7 para os testes - em linux
> Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não 
> esteja entendendo...???
> Fiz o seguinte teste via psql:
> - Na Sessão "A"
>   db_teste=# BEGIN WORK;
>   BEGIN
>   db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
>   LOCK TABLE
>   db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
>   resultado obtido ok!
>   *** aqui eu preciso bloquear todos os materiais/itens (de um pedido) 
> - como ex. fiz de apenas 1 (um).
>
> - Na Sessão "B":
>     ** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
>   SELECT * FROM tab_material where codg_serma='10'
>  
>   ** aqui eu obtive o resultado ok da leitura.
>      Portanto, é aqui, neste ponto que não deveria permitir nenhuma 
> leitura, já que sessão "A" ainda não terminou!
>      E AI ALGUÉM PODE ME AJUDAR!?
>
> Obrigado!
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>   

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

Responder a