2008/3/3 Lucimar Teles <[EMAIL PROTECTED]>:
>
> Tenho uma tabela onde a chave é gerada apartir de uma sequencia, como a
> sequencia sempre incrementa independente se o registro foi inserido ou não,
> qual seria a forma mais semples para identificar as numerações que ficaram
> vaga na tabela, para serem utilizadas posteriormente.

Essa pergunta e' frequente o suficiente que ja' deveria estar num FAQ
qualquer, se ja' nao estiver.

A primeira pergunta que me vem na cabeca ao me deparar com essa
pergunta e' "pra que?". A segunda coisa que me vem na cabeca e' "bom,
ele deve ter uma boa razao para querer sequencias sem buraco" ja' que
o trabalho para "preencher" os buracos nao e' trivial.

Se voce realmente, absolutamente precisa de sequencias sem buracos,
entao seria melhor usar sequencias para as chaves estrangeiras, e usar
um codigo seu gerado atomicamente na sua aplicacao ou banco de dados,
que lhe daria uma outra sequencia sem buracos.

Nos usamos esse metodo em alguns lugares da nossa aplicacao, mas e' um saco.

Para responder a sua pergunta, creio que a maneira mais simples seja
uma funcao em PL/pgSQL (ou outra PL, como PL/Python) que receba o nome
de uma tabela, e faca uma busca sequencial procurando pelos buracos, e
retornando o conjunto de numeracoes nao utilizadas.

Roberto
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a