Olá, Miguel

Já comentei no email anterior e fiz uma pequena descrição de como isso
funciona. Você deu uma olhada no exemplo que mandei?

O PostgreSQL não bloqueia a leitura (SELECT), apenas operações de escrita
(UPDATE e DELETE).


2009/8/11 MIGUEL JOSE DE LIMA <mig...@inlocsistemas.com.br>

> Oi Mário, Este é o problema a leitura nunca é bloqueada.
> Fiz os testes pedidos, mas para mim não mudou nada!
> Veja:
> - Na sessão 1:
>  db_teste=# BEGIN WORK;
>  BEGIN
>  db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
>  LOCK TABLE
>  db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where
> codg_serma='10';
>  UPDATE 1
>  db_teste=#   *** aguardando novo comando ***
> - Na sessão 2:
>   db_teste=# BEGIN WORK;
>   BEGIN
>   db_teste=# SELECT * FROM tab_material where codg_serma='10';
>   codg_empr | codg_serma |  id_serma  | desc_serma
>    -----------+------------+------------+------------+--------------+------
>    202       |         10 | 2020000010 | LAPIS Y    |
>
> É isso ai!!!??
> Obrigado.
>
> 2009/8/11 Mário Oshiro <mario.osh...@gmail.com>
>
> 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
>>
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>

[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to