"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Podem existir colunas de incremento automático sem serem a chave primária no MySQL?

Podem existir colunas de incremento automático sem serem a chave primária no MySQL?

Publicado em 2024-11-04
Navegar:625

Can Auto-Increment Columns Exist Without Being the Primary Key in MySQL?

Endereçando erro de definição de tabela incorreta: balanceamento de incremento automático e chave primária

O cenário envolve uma tabela MySQL onde a coluna id serve como um campo de incremento automático para visual conveniência, enquanto a coluna memberid atua como a chave exclusiva real. No entanto, a tentativa de definir a tabela com PRIMARY KEY (memberid) resulta em um erro (1075) informando que só pode haver uma coluna automática e deve ser uma chave.

Resolvendo o erro: preservando o incremento automático e Chave Única

Para resolver o problema, é possível ter uma coluna de incremento automático que não seja a CHAVE PRIMÁRIA, desde que um índice (chave) esteja definido nela. Aqui está a definição da tabela modificada:

CREATE TABLE members (
  id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  memberid VARCHAR(30) NOT NULL,
  `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  firstname VARCHAR(50) NULL,
  lastname VARCHAR(50) NULL,
  PRIMARY KEY (memberid),
  KEY (id)                          # or: UNIQUE KEY (id)
) ENGINE = MYISAM;

Ao adicionar um índice KEY ou UNIQUE KEY na coluna id, a funcionalidade de incremento automático é mantida enquanto a coluna memberid se torna a chave primária, permitindo consultas eficientes com base no valor memberid.

Escolhendo a abordagem ideal: equilibrando desempenho e espaço

A melhor escolha depende da importância relativa do desempenho e do espaço em disco. Se o desempenho for fundamental, manter a coluna de ID de incremento automático e usar um índice em memberid oferece um equilíbrio:

  • O ID de incremento automático fornece classificação eficiente e consultas de intervalo.
  • O index no memberid garante pesquisas rápidas usando o identificador exclusivo do membro.

No entanto, se o espaço em disco for uma preocupação significativa, considere remover a coluna id completamente e confiar na coluna memberid como chave primária e automática -campo de incremento. Essa abordagem sacrifica parte do desempenho para melhorar a utilização do espaço. Em última análise, a escolha entre desempenho e espaço depende dos requisitos específicos da aplicação.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3