Manual MyTable

PostgreSQL • Sequências & Identity

Esta seção ajuda a entender e administrar Sequências e colunas IDENTITY/SERIAL no PostgreSQL. Útil para ajustar o próximo valor após migrações, corrigir erros de “valor duplicado na chave” e padronizar a geração de identificadores.


Quando usar

  • Após importar dados, o próximo valor da sequência ficou atrás do maior ID existente.
  • Conflitos de PK: “duplicate key violates unique constraint”.
  • Padronizar se a coluna usa IDENTITY (moderno) ou legado SERIAL.

Abrir “Sequências & Identity”

  1. Conecte-se à sua conexão PostgreSQL e selecione o banco.
  2. No menu da tabela, acesse Estrutura e localize a coluna de chave (ex.: id).
  3. Abra o cartão Sequência/Identity para ver detalhes e ações (setval, sincronizar, etc.).

Dica: Em colunas antigas com SERIAL, existe uma sequência separada (ex.: tabela_id_seq). Em IDENTITY, a sequência é gerenciada pelo próprio atributo.


Ver informações da sequência

  • Nome da sequência (quando aplicável): ex. public.clientes_id_seq.
  • Valor atual (last value) e incremento.
  • Mínimo/Máximo (quando definidos) e ciclo (caching, cycle).
  • Coluna vinculada (se houver vínculo direto).

Sincronizar sequência com dados

Use quando a sequência ficou “atrás” após cargas manuais:

  1. Na tela da tabela, selecione Sequências & Identity.
  2. Toque em Sincronizar. A UI calcula o maior valor da coluna e ajusta a sequência para o próximo número livre.
  3. Confirme a alteração.

Resultado: novos INSERTs voltarão a gerar IDs válidos sem colisões.


Definir manualmente (setval)

Para cenários específicos, você pode definir um valor alvo:

  1. Informe o novo valor da sequência (ex.: maior ID atual + 1).
  2. Escolha se a próxima chamada deve usar exatamente este valor (is_called = false) ou o próximo.
  3. Confirme em Aplicar.

Converter SERIAL → IDENTITY (opcional)

Projetos mais novos preferem GENERATED BY DEFAULT/ALWAYS AS IDENTITY. A interface orienta a migração quando fizer sentido:

  • Remove o default antigo ligado à sequência e cria atributo IDENTITY.
  • Preserva o próximo valor para continuidade.
  • ALWAYS: sempre gera; BY DEFAULT: aceita valores manuais quando necessário.

Permissões

  • Para consultar/ajustar sequências, garanta USAGE/SELECT/UPDATE na sequência e ALTER na tabela, quando aplicável.
  • Veja PostgreSQL • Permissões para conceder papéis corretamente.

Boas práticas

  • Após importações ou duplicações de tabela, rode a ação Sincronizar.
  • Evite setar IDs manualmente em produção; se precisar, use colunas BY DEFAULT e documente o procedimento.
  • Monitore erros de chave duplicada logo após grandes cargas.

Erros comuns (e soluções)

“duplicate key violates unique constraint”

  • A sequência está atrás. Rode Sincronizar (ou setval para um valor acima do maior ID).

“Sem permissão para alterar sequência”

  • Conceda USAGE/UPDATE na sequência ao papel responsável e USAGE no schema.

“IDENTITY não aceita valor manual”

  • Colunas GENERATED ALWAYS bloqueiam valores manuais. Avalie mudar para BY DEFAULT quando o processo exigir.

Ferramentas relacionadas

Voltar: PostgreSQL • Exportar/Importar Dados