sábado, 2 de abril de 2016

Postgres alterar valor atual da sequence para o ultimo id da tabela

    Primeiramente você deve esta perguntando para que isso já que quando eu insiro um novo registro ele incrementa isso pra mim? Então imagine que você esta migrando um banco MySQL para Postgres e você tem que manter os IDs por causa dos relacionamentos. então você faz toda a migração dos dados, mas quando você adicinou esses dados no banco postgres você passou os id do banco anterior, sendo assim o postgres não chama o nextval da sequence então a sequence não é incrementada. Isso é ruim pois quando você tentar adicionar um novo registro na tabela sem passar o id vai gerar um erro porque o banco vai chamar o nextval da sequence que irá retorna um id que provalvelmente já existe no seu banco e não vai ser possível inserir esse registro.
    Para evitar esse problema é fácil, basta após a migração dos dados você definir qual o valor atual da sequence igual ao maior ID exitente na tabela, veja o exemplo abaixo:




    Faça isso para todas as tabela necessárias e o problema estará resolvido.

Nenhum comentário:

Postar um comentário