Manual MyTable

PostgreSQL • Constraints

As constraints garantem integridade e regras nos dados: PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK e NOT NULL. Aqui você pode criar, editar e remover constraints de forma guiada.


Abrir “Constraints”

  1. Conecte-se à sua conexão PostgreSQL e selecione o banco.
  2. Escolha o schema (ex.: public).
  3. Na árvore, selecione a tabela e abra Constraints.

Tipos de constraint

  • PRIMARY KEY — identifica unicamente cada linha (pode ser composta).
  • UNIQUE — impede duplicidades em uma ou mais colunas.
  • FOREIGN KEY — relaciona com outra tabela, mantendo referential integrity.
  • CHECK — exige que a expressão seja verdadeira (ex.: valor >= 0).
  • NOT NULL — exige valor na coluna (no Postgres é um atributo de coluna, mas aparece no painel).

Criar constraint

  1. Toque em Nova Constraint e escolha o tipo.
  2. PRIMARY KEY / UNIQUE:
    • Selecione coluna(s) e a ordem (para compostas).
    • (Opcional) Defina um nome amigável (ex.: pk_cliente, uk_email).
  3. FOREIGN KEY:
    • Escolha a(s) coluna(s) local(is) e a tabela/coluna(s) referenciada(s).
    • Defina ações: ON DELETE / ON UPDATE (NO ACTION, RESTRICT, CASCADE, SET NULL, SET DEFAULT).
    • (Opcional) Marque como DEFERRABLE e INITIALLY DEFERRED se seu fluxo exigir validar só no COMMIT.
  4. CHECK:
    • Informe a expressão (ex.: quantidade >= 0, status IN ('A','I')).
    • Dê um nome claro (ex.: ck_quantidade_nao_negativa).
  5. NOT NULL:
    • Selecione a coluna e confirme.
    • Dica: se existir dados nulos, ajuste antes ou defina DEFAULT temporário.
  6. Revise o resumo e toque em Criar.

Editar constraint

  • Selecione a constraint e toque em Editar.
  • Para PK/UNIQUE, ajuste colunas/ordem (pode exigir recriação).
  • Para FK, altere ações (ON DELETE/UPDATE) ou colunas referenciadas (pode exigir recriar).
  • Para CHECK, atualize a expressão (em geral, recria-se a constraint).
  • Para NOT NULL, basta alternar o estado na coluna (o app guia caso haja nulos).

Remover constraint

  • Escolha a constraint e toque em Remover.
  • Atenção: Remover PK/UK/FK pode quebrar integrações e permitir dados inconsistentes. Valide com seu time.

Boas práticas

  • Use nomes padronizados (pk_*, uk_*, fk_origem_destino, ck_*).
  • Imponha NOT NULL onde fizer sentido e combine com DEFAULT para facilitar migrações.
  • Prefira CASCADE apenas quando o negócio permitir exclusões encadeadas.
  • Para cargas complexas, avalie DEFERRABLE em FKs e CHECKs (validar no COMMIT).
  • Valide em homolog com dados reais antes de alterar em produção.

Erros comuns (e soluções)

“Violação de UNIQUE/PK”

  • Existem duplicidades. Limpe/normalize os dados antes de criar a constraint.

“Violação de FK”

  • Linhas órfãs na tabela filha. Crie os pais, ajuste chaves ou use SET NULL/DEFAULT quando fizer sentido.

“Não é possível impor NOT NULL”

  • Há valores nulos. Preencha-os (UPDATE) e só então aplique o NOT NULL.

“CHECK impede atualização legítima”

  • Revise a expressão para cobrir exceções previstas (sem abrir brechas indesejadas).

“Deadlocks após alterar FKs”

  • Revise a ordem das operações e considere DEFERRABLE para validar no COMMIT.

Ferramentas relacionadas

Próximo: PostgreSQL • Índices • Voltar: PostgreSQL • Estrutura da Tabela