>> Aí precisamos saber qual é a idéia desse lock. Por que você faz esse >> lock. Qual a necessidade de sua aplicação fazer isso. > > > O cenario é o seguinte: varios clientes enviam informações a serem > processadas e inserem na tabela tb_processamento_tmp. > Varios outros clientes consomem os dados dessa tabela. porém o mesmo dado > não pode ser consumido por mais de um cliente. > Por isso faço o seguinte: > bloqueio a tb_processamento_tmp para os demais clientes, > retorno um set de registros que não estão em processamento para o cliente > que solicitou primeiro, > marco esses registros retornados como "em processamento", > libero a tabela para a proxima requisicao.
Tente fazer lock só nos registros que precisar. > Mas isso esta errado. Pois ao dar um lock nessa tabela eu fecho a entrada de > registros. > O que eu queria bloquear era apenas a requisição para processamento. Para bloquear registros específicos, use SELECT.... FOR UPDATE. Os registros ficarão bloqueados para modificação até o COMMIT ou ROLLBACK da transação. A limpeza automática não é abortada neste caso, ela apenas pulará os registros afetados e os tratará na próxima execução. []s Flavio Gurgel _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
