Em Ter, 2013-05-07 às 14:29 -0300, izaque Maciel escreveu:
> Bom Dickson, você me perguntou anteriormente sobre:
> 
> *Uma questão importante... essa sua numeração de selos pode haver falhas???
> Se não tiver problemas que vc tenha numerações desse tipo: 1, 2, 4, 7, 9,
> 10, 11, 15... então vc pode usar sequences [1]*

Apenas corrigindo, foi o Fabrizio quem questionou isto. :)


> A sequense garante um nº único.
> Mas infelizmente não dá pra usar a sequense, seria algo como isso, mas não
> é um "incremento", o nº de selo se repete todas as
> vezes que adquiro uma nova remessa de uma determinada categoria, a cada
> remessa inicia de zero. Não é algo como "eu" gere o próximo número, mas sim
> eu cadastro esta numeração na base de dados.
> 
> É algo mais ou menos como o Marcelo me enviou em anexo, uma function que
> busca o selo e já o atualiza para situação 3, que deve ser como utilizado.


Se esta sua base só pode ser acessada/manipulada por esta aplicação
*específica*, as sugestões do Osvaldo (lá no começo da thread) e a do
Flávio são pertinentes e você poderia pensar em utilizar i) SELECT FOR
UPDATE ou ii) pg_advisory_locks, entretanto a aplicação teria que ser
modificada para acessar seguindo a regra que você escolherá (i) ou (ii),
pelo menos para a tabela em questão.


A grosso modo seria procurar todos os locais que fazem SELECT nesta
tabela e altere para utilizar a opção (i) ou (ii). Você precisa fazer
isto para qualquer aplicação que utilize esta base. Por fim, você pode
criar uma função que encapsula a lógica de forma atômica e re-utilizá-la
na(s) aplicação(ões).


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

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