[firebase-br] RES: reenumerar um campo autoincremento

Zottis bzottis em ig.com.br
Sex Jul 2 15:15:17 -03 2010


Tenho uma procedure que acha os furos, se servir....

Ta na mão.

SET TERM ^ ;

CREATE OR ALTER PROCEDURE OBTER_CODIGO_NULO 
returns (
    codigo_nulo integer)
as
declare variable minimo integer;
declare variable maximo integer;
declare variable sequencia integer;
declare variable valor_atual integer;
begin
  select mIN(F.Codigo_anual) from Far_mtr F where EXTRACT(YEAR FROM
F.Data_cad) = EXTRACT(YEAR FROM CURRENT_DATE)
  INTO MINIMO;

  select max(F.Codigo_anual) from Far_mtr F where EXTRACT(YEAR FROM
F.Data_cad) = EXTRACT(YEAR FROM CURRENT_DATE)
  INTO MAXIMO;

  sequencia = MINIMO;

  while (sequencia <= maximo) DO
    begin
                 select FIRST 1 F.Codigo_anual from Far_mtr F where
F.Codigo_anual = :sequencia
                     and  EXTRACT(YEAR FROM F.Data_cad) = EXTRACT(YEAR FROM
CURRENT_DATE)
                 INTO Valor_atual;

            if (:Valor_atual <> :Sequencia) then
            begin
              CODIGO_NULO = Sequencia;
              leave;
            END
      Sequencia = Sequencia + 1;
  end

  suspend;
end^

SET TERM ; ^

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Eduardo Pombo
Enviada em: sexta-feira, 2 de julho de 2010 14:29
Para: buhlerax em yahoo.com.br; FireBase
Assunto: Re: [firebase-br] reenumerar um campo autoincremento

Boa Tarde,

Nao sei bem se a numeracao que vc quer é a q vou ter sugerir pq na sequencia
q vc colocou como correta falta  o 11 tb, mas para numeracao sequencial
seria simplesmesnte setar em todos os registros o codigo para 0 (sem filtro
mesmo) e depois setar codigo = (select max(codigo) from tabela where
codigo=0)+1

Espero ter ajudado




Em 2 de julho de 2010 13:31, Alexandre Pereira Bühler
<buhlerax em yahoo.com.br> escreveu:
>  Boa tarde,
> Se puderem me dar uma luz (caminho das pedras).
> Tenho um campo autoincremento de uma tabela que foi importada do dbf 
> para firebird.
> Não possuo mais a tabela original em dbf.
> Quero sanar os furos de seqüencia desta tabela.
> Há algum comando sql onde possa reenumerar esta tabela de forma que o 
> campo codigo fique na sequencia correta.
> EX: sequencia hoje 1,4,6,7,8,9,10,12
> deverá ficar 1,2,3,4,5,6,7,8,9,10,12.
> Obrigado
>
> --
> Alexandre Pereira Bühler
> Técnico Eletroeletrônica - Senai - MG
> Linux User: 397.546
> Colunista: www.delphisophp.com
> Owner: http://br.groups.yahoo.com/group/freepascal/
> Liberdade é essencial. Use GNU/Linux.
> Legalize os softwares de sua empresa
>
> Simão&   Bühler Ltda (Infobrindes)
> Instalação, manutenção e venda de servidores GNU/Linux.
> http://www.simaoebuhler.com.br
> Hardware acesse, veja e tenha produtos com qualidade, garantia e nota 
> fiscal.
> http://www.simaoebuhler.com.br/loja
> alexandre em simaoebuhler.com.br
> Telefone: (41) 3538-5428
>
> Infobrindes (Simão&   Bühler Ltda)
> Brindes e material promocional.
> http://www.infobrindes.com.br
> alexandre em infobrindes.com.br
> Telefone: (41) 3532-5428
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 

Atenciosamente

José Eduardo Pombo de Barros
Gerente de Manutenção de Sistemas

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista