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.
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.
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:
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.
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