Manual MyTable

MySQL • Constraints (PK, UNIQUE, FK, CHECK)

As constraints garantem integridade e consistência dos dados no MySQL. Aqui você cria, edita e remove PRIMARY KEY, UNIQUE, FOREIGN KEY e CHECK (MySQL 8+), tudo de forma guiada.


Abrir “Constraints”

  1. Conecte-se à sua conexão MySQL e selecione o banco.
  2. Em Visualizar Tabelas, escolha a tabela.
  3. No menu de ações, toque em Constraints.

Tipos de constraint

  • PRIMARY KEY (PK): identifica unicamente cada linha. Geralmente INT/BIGINT AUTO_INCREMENT ou UUID.
  • UNIQUE: evita duplicidade (ex.: email não pode repetir).
  • FOREIGN KEY (FK): relacionamento entre tabelas; define ações ON DELETE/UPDATE: RESTRICT, CASCADE, SET NULL, NO ACTION (equivalente a RESTRICT em MySQL).
  • CHECK (MySQL 8+): regra booleana (ex.: valor >= 0).

Nota: No MySQL, InnoDB é a engine recomendada para uso de FKs.


Criar constraint

Primary Key

  1. Abra Nova ConstraintPRIMARY KEY.
  2. Escolha uma ou mais colunas (PK composta quando necessário).
  3. (Opcional) Defina a coluna inteira com AUTO_INCREMENT se for PK numérica.
  4. Salvar.

Unique

  1. Escolha UNIQUE e selecione a(s) coluna(s).
  2. Use nomes claros (ex.: uk_usuarios_email).
  3. Salvar.

Foreign Key

  1. Escolha FOREIGN KEY.
  2. Selecione a(s) coluna(s) locais e a tabela/coluna(s) referenciada(s).
  3. Defina as ações ON DELETE e ON UPDATE (ex.: RESTRICT, CASCADE, SET NULL).
  4. Salvar.

Check (MySQL 8+)

  1. Escolha CHECK e informe a expressão (ex.: quantidade >= 0).
  2. Salvar.

Editar / Remover constraint

  • Selecione a constraint na lista e toque em Editar para ajustar colunas, regra ou ações.
  • Use Remover para apagar a constraint (confirme dependências antes, principalmente com FKs).

Dica: Para mudanças estruturais maiores (trocar tipos, renomear colunas), use MySQL • Alterar Tabela e depois volte às constraints.


Boas práticas

  • Defina PK simples e estável. Para altíssimo volume, prefira BIGINT ou UUID BINARY(16).
  • Crie índices para colunas de FKs e colunas usadas em UNIQUE (melhora escrita/leitura). Veja MySQL • Índices.
  • Use SET NULL somente se a coluna aceitar NULL e fizer sentido de negócio.
  • Nomeie constraints com padrão (ex.: pk_, uk_, fk_, ck_ + tabela + propósito).
  • Valide em homolog e registre mudanças significativas.

Problemas comuns (e soluções)

“Cannot add or update a child row: a foreign key constraint fails”

  • Os dados não têm o registro pai correspondente. Insira primeiro o pai ou ajuste a política ON DELETE/UPDATE.

“Duplicate entry for key … (UNIQUE/PK)”

  • Existe duplicidade. Remova/ajuste o registro, ou mude o índice/constraint conforme a regra real.

“Referenced column … has a different collation/charset”

  • Unifique tipo, charset e collation entre as colunas relacionadas.

“Cannot delete or update parent row: a foreign key constraint fails”

  • Registros filhos impedem a operação. Use ON DELETE CASCADE (se fizer sentido) ou exclua/ajuste os filhos antes.

“CHECK not enforced / versão”

  • Verifique se está em MySQL 8+. Em versões antigas, CHECK pode ser ignorado.

Fluxos relacionados

Próximo: MySQL • Índices • Voltar: MySQL • Criar Tabela