Maison >base de données >tutoriel mysql >Comment puis-je utiliser une colonne différente comme clé primaire tout en conservant l'incrémentation automatique dans MySQL ?

Comment puis-je utiliser une colonne différente comme clé primaire tout en conservant l'incrémentation automatique dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 16:02:03718parcourir

How Can I Use a Different Column as Primary Key While Maintaining Auto-Increment in MySQL?

Maintenir l'incrémentation automatique et utiliser une autre colonne comme clé primaire dans MySQL

Dans MySQL, lors de la création d'une table avec une colonne à incrémentation automatique , le comportement par défaut est que cette colonne soit également la clé primaire. Cependant, ce comportement peut entraîner des problèmes de performances si les requêtes identifient principalement des lignes utilisant une colonne différente.

Considérez le scénario suivant : vous créez une table avec une colonne nommée id comme clé primaire à incrémentation automatique et une autre colonne nommée memberid qui est unique et utilisé dans les requêtes pour identifier les membres. Dans ce cas, il serait idéal d'utiliser memberid comme clé primaire pour des raisons de performances, mais cela provoquerait une erreur :

1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

Pour résoudre ce problème, la meilleure solution est de conserver la colonne id pour maintenir la fonctionnalité d'auto-incrémentation tout en définissant l'ID membre comme clé primaire. Ceci peut être réalisé en créant un index (clé) sur la colonne id, comme indiqué ci-dessous :

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; 

Cette approche vous permet de conserver la colonne à incrémentation automatique à des fins de performances tout en utilisant l'ID de membre comme principal. clé pour une interrogation efficace.

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