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