"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Pueden existir columnas de incremento automático sin ser la clave principal en MySQL?

¿Pueden existir columnas de incremento automático sin ser la clave principal en MySQL?

Publicado el 2024-11-04
Navegar:988

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

Abordar el error de definición de tabla incorrecta: equilibrar el incremento automático y la clave principal

El escenario involucra una tabla MySQL donde la columna de identificación sirve como un campo de incremento automático para visualización conveniencia, mientras que la columna memberid actúa como la clave única real. Sin embargo, el intento de definir la tabla con PRIMARY KEY (memberid) da como resultado un error (1075) que indica que solo puede haber una columna automática y que debe ser una clave.

Resolviendo el error: preservando el incremento automático y clave única

Para resolver el problema, es posible tener una columna de incremento automático que no sea la CLAVE PRIMARIA, siempre que se defina un índice (clave) en ella. Aquí está la definición de la tabla 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;

Al agregar un índice CLAVE o CLAVE ÚNICA en la columna de identificación, la funcionalidad de incremento automático se mantiene mientras la columna de identificación de miembro se convierte en la clave principal, lo que permite consultas eficientes basadas en el valor de identificación de miembro.

Elegir el enfoque óptimo: equilibrar el rendimiento y el espacio

La mejor elección depende de la importancia relativa del rendimiento y el espacio en disco. Si el rendimiento es primordial, mantener la columna de identificación de incremento automático y usar un índice en memberid ofrece un equilibrio:

  • La identificación de incremento automático proporciona una clasificación y consultas de rango eficientes.
  • El index on memberid garantiza búsquedas rápidas utilizando el identificador único de miembro.

Sin embargo, si el espacio en disco es una preocupación importante, considere eliminar la columna id por completo y confiar en la columna memberid como clave principal y automática. -campo incremental. Este enfoque sacrifica algo de rendimiento para mejorar la utilización del espacio. En última instancia, la elección entre rendimiento y espacio depende de los requisitos específicos de la aplicación.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3