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