Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cdfree

sequence oracle

Recommended Posts

Tenho um id na tabela e no insert auto1.nextval, so que durante o deservolvimento houve vários registros (1,2,3,4,5,6,7,8,......) e foram deletados, agora como posso ordena/atualizar a sequencia de (20,21,22,23,24,25) para (1,2,3,4,5,6)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é recomendado, pois :

 

As tabelas que são FK desta tabela também deveriam ser atualizadas

A sequence precisaria ser "dropada" e recriada com o novo valor menor

 

É absolutamente necessário este reordenamento ?

Esta chave não pode ter valores faltantes ("banguelas") ? Neste caso sequence não é a melhor implementação.

----

Compartilhar este post


Link para o post
Compartilhar em outros sites
DROP SEQUENCE auto1;
CREATE SEQUENCE auto1 MINVALUE 1 MAXVALUE 999999999999999999999999999 
INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE ;

BEGIN
   FOR R IN (SELECT * FROM TABELA ORDER BY CHAVE)
   LOOP
      UPDATE TABELA SET CHAVE = auto1.NEXTVAL
      WHERE CHAVE = R.CHAVE;
   END LOOP;
END;

Faça DUAS salvas antes de rodar isto.

mas, repito, eu não faria a não ser em último caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.