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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a