voce pode criar a sequencia isoladamente e usar as funções nextval, curval, etc 
para manipulá-la via aplicação ou gatilho.
att carlos

From: Marco Aurélio V. da Silva 
Sent: Thursday, May 31, 2012 8:09 PM
To: Comunidade PostgreSQL Brasileira 
Subject: [pgbr-geral] Dica sobre sequência sem usar campo serial.

Caros,

Não lembro se esse assunto já foi discutido na lista, mas vamos lá. Estou 
desenvolvendo um sistema que terá vários cadastros com numeração sequencial 
gerada pelo sistema, mas preciso evitar ao máximo ter furos na sequência. O 
sistema é multiusuario, e há a possibilidade de vários usuários fazendo 
cadastro ao mesmo tempo. 
A lógica que desenvolvi é o seguinte, uma função (vb.net+npgsql) que pega uma 
determinada tabela e busca qual o maior codigo dela ai a função soma mais 1 e 
adiciona o novo registro, logo a função é composta por dois comandos um select 
para pegar o ultimo codigo, e um insert para inserir a nova numeração.
Fazendo um stress teste na função com 3 usuários, só apos 115 tentativas dando 
enter ao mesmo tempo na tela conseguimos duplicar um número, mas fazendo um 
programa que faz um for de 1 a 200 da função rodando em tres maquinas ao mesmo 
tempo deu mais ou menos uns 30% de duplicidade. Adicionando um sleep de 0,1 
segundo antes de cada select a duplicidade caiu para 15% mas ainda ocorreu.
Existe alguma possibilidade de melhorar isto sem usar sequence ? A sequence me 
gera o seguinte problema, o usuario entra na tela de cadastro e desiste, ai 
excluo este numero para reaproveitar se ninguem ja tiver incluido um numero 
maior.
Posso fazer o controle de duplicidade tb, mas ai teria que ficar tratando a 
mensagem de erro.
Tem alguma outra forma ?

Desde já agradeço a atenção recebida.

Marco Aurélio V. da Silva
ma...@prodatanet.com.br
marcoprod...@gmail.com
msn: ma...@prodatanet.com.br
Prodata Inf. e Cadastros LTDA
(33) 3322-4444


--------------------------------------------------------------------------------
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a