Maison >base de données >tutoriel mysql >Puis-je modifier la clé primaire dans MySQL tout en gardant un champ à incrémentation automatique fonctionnel ?

Puis-je modifier la clé primaire dans MySQL tout en gardant un champ à incrémentation automatique fonctionnel ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 19:18:02607parcourir

Can I Modify the Primary Key in MySQL While Keeping an Auto-Incrementing Field Functional?

Modification de la clé primaire MySQL : équilibrer l'incrémentation automatique et l'efficacité des requêtes

Lors de la définition d'une table dans MySQL, un défi courant survient lorsque l'on tente de combiner des champs d'incrémentation automatique avec une autre clé comme clé primaire. Cet article aborde la question de savoir comment y parvenir tout en conservant des performances optimales et une accessibilité des identifiants.

L'exemple de table fourni comprend un champ d'identifiant à incrémentation automatique et un champ d'identifiant de membre unique utilisé pour identifier les membres dans les requêtes. La question se pose de savoir comment établir memberid comme clé primaire tout en conservant la fonctionnalité d'auto-incrémentation du champ id.

L'erreur "1075 - Définition de table incorrecte ; il ne peut y avoir qu'une seule colonne automatique et elle doit être définie as a key" indique que MySQL nécessite que la colonne auto-incrémentée soit définie comme clé. Pour résoudre ce problème, un index (clé) doit être ajouté au champ id.

La définition de table modifiée suivante résout le problème :

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 créant un index sur le champ id, MySQL sera capable de localiser efficacement les enregistrements en utilisant le champ id ou memberid. Cette solution garantit que les performances des requêtes utilisant memberid ne sont pas compromises tout en conservant les avantages d'un champ id auto-incrémenté.

Il est donc possible de configurer une table de base de données avec une clé primaire qui n'est pas l'auto -champ d'incrémentation tout en préservant la fonctionnalité et l'efficacité d'une colonne à incrémentation automatique. Cette flexibilité dans la conception des tables permet des performances optimales et une utilisation conviviale des identifiants dans les requêtes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn