Kaleb 0 Denunciar post Postado Março 4, 2008 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
Motta 645 Denunciar post Postado Março 4, 2008 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
Kaleb 0 Denunciar post Postado Março 12, 2008 Desculpe a demora por responder, tinha pensado em uma solução +- assim. Quando tiver tempo para finalizar, posto como ficou o código... Obrigado pela resposta. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Março 13, 2008 Pq tu não recria a sequence com a opção START apartir do último número cadastrado na tabela? Abraços, Compartilhar este post Link para o post Compartilhar em outros sites