Estamos ai pra isso... Precisando, e eu podendo ajudar...

[ ]'s


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
[email protected]
Linux user #391083




2009/8/12 MIGUEL JOSE DE LIMA <[email protected]>

> OI, Charly,
> Fiz os testes aqui, e é como vc passou. Realmente ajuda!
> Valeu, Muito Obrigado!
>
>
> 2009/8/12 Charly Frankl <[email protected]>
>
>> Bom dia Leandro...
>>
>> Concordo com você que seja um tanto quanto "decepcionante" você não
>> conseguir um lock para consultas, mas como tratado, faz parte do modelo
>> relacional. Também tive essa dificuldade no início, quando vim trabalhar com
>> bancos relacionais.
>>
>> Bem, mas como comentei, uma forma de "burlar" esta restrição é utilizar a
>> instrução "FOR UPDATE NOWAIT". Segue um exemplo:
>>
>> Em uma seção do psql (pgadmin, aplicação da empresa, etc...) aberta eu
>> realizo um select:
>>
>> begin;
>> select *  from municipio where cod_uf = 43 FOR UPDATE NOWAIT;
>>
>> (Observe que eu não fechei a transação...)
>>
>> Se em outra seção aberta eu realizar o mesmo select :
>> begin;
>> select *  from municipio where cod_uf = 43 FOR UPDATE NOWAIT;
>>
>> O banco simplesmente me retorna a mensagem:
>> ERROR:  could not obtain lock on row in relation "municipio"
>>
>> Bem... É uma forma de burlar o problema a princípio, mas como já discutido
>> aqui, o melhor a fazer (ao menos a médio prazo) é rever a aplicação. Depois
>> de revista, ai sim você pode optar pelo melhor modelo. Utilizar o FOR UPDATE
>> NOWAIT em consultas de atualização não é um erro, mas utilizá-lo
>> indiscriminadamente pode trazer transtornos e "efeitos colaterais" não
>> desejados. Todavia, como cada caso exige uma solução específica, fica ai a
>> sugestão.
>>
>>
>> Espero ter ajudado.
>>
>> Att,
>>
>>
>>
>> --
>> Charly Frankl
>> http://javadevilopers.blogspot.com/
>> [email protected]
>> Linux user #391083
>>
>>
>>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a