Ir para conteúdo

POWERED BY:

Arquivado

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

Kaleb

Atualizar Last_Number Sequences

Recommended Posts

Amigos,

 

Sou novo aqui no forum, porém sempre li posts e sempre me ajudaram com minhas duvidas.

Agora estou com um problema no Oracle e gostaria que alguem que já precisou de algo parecido poderia me dar algumas dicas. O problema e o seguinte.

 

Recentemente exportei uma nova base para a produção de meu sistema, em algumas tabelas o valor do last_number do sequence esta alterado, para um valor que já foi cadastrado, portanto quando um usuario vai fazer uma nova inserção no banco de dados retorna uma mensagem de erro de dados já cadastrados.

A única maneira que sei de corrigir o problema e alterando o valor do incremento e ir até o número desejado e depois retornar o incremento para um +- assim:

 

[code]alter sequence <nome do sequence> increment by -50;
select <nome do sequence>.nextval from dual;
alter sequence<nome do sequence> increment by 1;
[/code]

 

O problema é o seguinte como tenho várias tabelas para atualizar é inviavel ter que selecionar o valor maximo que já esta gravado na tabela, subtrair com o que esta no last_number e ai fazer a rotina acima.

Alguem teria alguma ideia de como posso gerar um script para realizar esta operação.

Já tentei de várias maneiras mas acho que não tenho conhecimento em oracle suficiente para fazer isto.

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto ocorre realmente em import pois os tesmpos de importação são diferentes.

Em geral eu fazia isto dropando e reqriando a sequence com o valor correto mas no seu caso parece inviável.

 

Uma solução seria :

Ler cada tabela envolvida e obter o número máximo da tabela

gravar um scritp com algo assim :

 

DROP SEQUENCE <SEQUENCE>;

CREATE SEQUENCE <SEQUENCE>

MINVALUE 1

MAXVALUE <VALOR TABELA + 1;

 

Não é muito simples mas se forem muitas tabelas vale a pena.

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.