"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Des colonnes à incrémentation automatique peuvent-elles exister sans être la clé primaire dans MySQL ?

Des colonnes à incrémentation automatique peuvent-elles exister sans être la clé primaire dans MySQL ?

Publié le 2024-11-04
Parcourir:958

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

Résolution d'une erreur de définition de table incorrecte : équilibrage de l'incrémentation automatique et de la clé primaire

Le scénario implique une table MySQL dans laquelle la colonne id sert de champ d'incrémentation automatique pour le visuel commodité, tandis que la colonne memberid agit comme la clé unique réelle. Cependant, la tentative de définition de la table avec PRIMARY KEY (memberid) entraîne une erreur (1075) indiquant qu'il ne peut y avoir qu'une seule colonne automatique et qu'il doit s'agir d'une clé.

Résolution de l'erreur : préservation de l'incrémentation automatique et Unique Key

Pour résoudre le problème, il est possible d'avoir une colonne auto-incrémentée qui n'est pas la PRIMARY KEY, à condition qu'un index (clé) y soit défini. Voici la définition de table modifiée :

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;

En ajoutant un index KEY ou UNIQUE KEY sur la colonne id, la fonctionnalité d'incrémentation automatique est conservée tandis que la colonne memberid devient la clé primaire, permettant des requêtes efficaces basées sur la valeur memberid.

Choisir l'approche optimale : équilibrer les performances et l'espace

Le meilleur choix dépend de l'importance relative des performances et de l'espace disque. Si les performances sont primordiales, le maintien de la colonne d'identifiant à incrémentation automatique et l'utilisation d'un index sur l'ID de membre offrent un équilibre :

  • L'identifiant à incrémentation automatique permet un tri et des requêtes de plage efficaces.
  • Le L'index sur l'ID membre garantit des recherches rapides à l'aide de l'identifiant de membre unique.

Cependant, si l'espace disque est un problème important, envisagez de supprimer complètement la colonne ID et de vous fier à la colonne ID membre comme clé primaire et clé automatique. -champ incrémental. Cette approche sacrifie certaines performances au profit d'une meilleure utilisation de l'espace. En fin de compte, le choix entre performances et espace dépend des exigences spécifiques de l’application.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3