[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