[... encaminhando para lista ...]

Em Ter, 2013-05-07 às 11:41 -0300, izaque Maciel escreveu:
Bem pessoal, me desculpe na demora do retorno de suas respostas.
> Vou tentar expor o problema, que é de concorrência mesmo. Talvez nem
seja necessário bloquear o registro ou a tabela. Vamos lá:
> 
> 
> Estou implementando um sistema, onde a pessoa vai adquirir uma
determinada remessa de selos, onde a contagem
> inicia-se de 0 .. 999, por exemplo. 
> Isso ocorre para uma determinada categoria de selo, que vai de 1 até
150 e pode crescer, então
> pra cada uma dessas categorias, quando adquiro essas remessas, sempre
se inicia de 0. Logo a sequence não ajudaria aqui.



Você conseguiria exercitar em sua aplicação o uso de sequences e obter
este valor usando algo como: nexval('nome_sequence') - 1  ?


 
> O problema é que não sei como posso garantir, em questão de
performance e concorrência, que se dois usuários ou mais, ao mesmo tempo
requisitem o próximo número de uma determinada categoria, obtenham o
mesmo registro. Caso obtenham o mesmo registro, irá
> gerar uma violação de chave primária, onde guardo as numerações já
utilizadas, pois mesmo que eu faça a requisição e imediatamente
> atualizo aquele número como utilizado, não há como saber se outro
usuário também o requisitou, porque somente posso atualizá-lo após os 
devidos Inserts e relacionamento com outras tabelas. 


+1 para o uso de sequences.

 
> Em fim, tudo isso se resume que preciso que o segundo usuário aguarde
toda a requisição/atualização do primeiro usuário.
> 
> 
> 1º Usuário seleciona
> 
> 
> select ..
> inserts..
> update..
> 
> 
> 2º Usuário fica aguardando tudo isso acima terminar, para que o select
dele seja executado, depois do acima efetuado então a mesma coisa para
este:
> 
> 
> select ..
> inserts..
> update..
> 
> 
> Me desculpem por não ter explica melhor, me embaracei.


-- 
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

Attachment: 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

Responder a