Em Ter, 2013-05-07 às 08:33 -0300, izaque Maciel escreveu: > É o seguinte, é um sistema onde será requisitado a todo momento uma > sequência numérica, e tenho que garantir que dois usuários do sistema não > peguem o mesmo registro, ele deve aguardar que o registro selecionado > anteriormente seja utilizado ou desbloqueado pela seleção anterior, sendo > que, se num select utilizei o registro 7, então o outro usuário que fizer > um select só poderá pegar a 8, ou a 7 se ela já foi desbloqueada e não > utilizada. Utilizarei para um sistema de controle de selo, então, nunca > dois usuários podem utilizar o mesmo selo, um problema de concorrência. > Como expliquei na primeira mensagem, no Firebird fazia com "With lock" e > então o select de outro usuário aguardava o usuário utilizar o registro > selecionado anteriormente ou devolver o registro selecionado. Como abaixo: > > SELECT FIRST 1 * FROM DOCUMENT WHERE STATUS = 'N' AND PARENT_ID = 55 > FOR UPDATE WITH LOCK
O seu problema é por conta da visualização mesmo? Ou seria porque depois da aplicação obter este registro ele sofre uma alteração e depois "volta para o banco" na forma de um UPDATE? Se for algo neste sentido você pode mudar o nível de isolamento [1] ou aplicar uma estratégia mais performática. O Postgres já foi assim no passado antes de implementar o MVCC, modelo este que permite concorrência e performance, e que cuida de boa parte dos problemas de bloqueio para você. Não estou dizendo que você esteja errado na sua estratégia, só ainda não estou conseguindo entender o problema por completo de forma que talvez o que você precise seja algo que o Postgres possa fazer para você facilmente de outra maneira, entretanto dentro do escopo que temos do seu problema não conseguimos ainda identificar que outra abordagem seria esta. Veja, o caso dos SELECT FOR SHARE funcionariam se todos os aplicativos que conectam neste banco usassem-no, o que pode não ser a realidade do seu ambiente. Talvez precisamos de mais dados. [1] http://www.postgresql.org/docs/9.2/static/transaction-iso.html []s -- Dickson S. Guedes mail/xmpp: [email protected] - skype: guediz http://guedesoft.net - http://www.postgresql.org.br http://www.rnp.br/keyserver/pks/lookup?search=0x8F3E3C06D428D10A
signature.asc
Description: This is a digitally signed message part
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
