Olá Flávio, era isso que ia perguntar pro Marcelo agora, se mesmo antes do update do registro encontrado, se outra transação concorrente iria conseguir ler o mesmo registro. Por favor, me explique melhor sobre o SELECT .. FOR UPDATE.
Quando você diz "Quando um SELECT... FOR UPDATE falhar, você tenta pegar outra linha", eu tenho que programar isso dentro de uma *function* ou o banco fará isso *automaticamente*? Há uma maneira de checar por exemplo na cláusula Where, que não traga a linha que já está com SELECT FOR UPDATE? Em 7 de maio de 2013 15:33, Flavio Henrique Araque Gurgel < [email protected]> escreveu: > Evite o top-posting. > > Em 07-05-2013 15:29, [email protected] escreveu: > > Trabalho com o seguinte cenário: determinada quantidade de selos é >> encomendada; quando os selos chegam, toda a sequência é gravada em uma >> tabela no banco de dados. >> Quando preciso de um selo, utilizo a função no início da montagem para >> bloquear o selo (estado: 1-disponível 3-utilizado) até que o usuário >> consiga terminar gravando. >> Se o usuário desistir, é só dar o RollBack na transação que o selo >> estará disponível novamente. >> Se outro usuário precisar utilizar um selo do mesmo tipo, a função >> retornará com o próximo número disponível. >> > > Utilize SELECT... FOR UPDATE > Ele foi feito pra isso. > > Uma outra transação concorrente vai conseguir "ler", fazer um SELECT > simples na mesma linha, mas não vai conseguir fazer outro SELECT... FOR > UPDATE. > > Simples assim. Quando um SELECT... FOR UPDATE falhar, você tenta pegar > outra linha. > > > []s > > > ______________________________**____ > Flavio Henrique A. Gurgel > Líder de Projetos Especiais > Consultoria, Projetos & Treinamentos 4LINUX > Tel1: +55-11.2125-4747 ou 2125-4748 > www.4linux.com.br > email: [email protected] > ______________________________ > FREE SOFTWARE SOLUTIONS > ______________________________**_________________ > pgbr-geral mailing list > [email protected].**org.br<[email protected]> > https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geral<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
