Concordo com você. Temos que tomar muito cuidado...! ATé + 2009/8/12 Charly Frankl <[email protected]>
> É uma alternativa, apesar de eu não gostar muito dela, pois sou a favor da > delegação de responsabilidades. Neste caso, transação de banco ser de > responsabilidade do banco... Delegando controle transacional para a > aplicação podemos incorrer em falhas já corrigidas no banco, além de outros > transtornos, como tornar muito complexa a implementação de código, muitas > vezes desnecessariamente (e antes que me leve a mal, não estou falando no > teu caso, pois nem conheço o problema). > > > Mas como dito anteriormente, e uma das coisas que acho mais bacana na área > de TI é que pra cada caso uma solução. > > > Att, > > > -- > Charly Frankl > http://javadevilopers.blogspot.com/ > [email protected] > Linux user #391083 > > > > > 2009/8/12 mateusgra <[email protected]> > > >> Resolvi esse problema na aplicação. Em Java por exemplo vc pode fazer um >> filter onde so vai dar o commit qdo toda a transação for terminada. >> E se vc for mais alem pode até esperar o subimit do cliente. >> >> Seguindo o exemplo da compra online ele so atualizaria o saldo e o estoque >> se o cliente confirmasse toda a compra. >> >> >> 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 >> > [email protected] >> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/BLOQUEIO-DE-REGISTRO-tp24923152p24937028.html >> Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com. >> >> _______________________________________________ >> pgbr-geral mailing list >> [email protected] >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
