Maison > base de données > tutoriel mysql > Puis-je incrémenter automatiquement une clé non primaire dans MySQL InnoDB ?

Puis-je incrémenter automatiquement une clé non primaire dans MySQL InnoDB ?

DDD
Libérer: 2024-11-01 17:16:30
original
1138 Les gens l'ont consulté

Can I Auto-Increment a Non-Primary Key in MySQL InnoDB?

MySQL InnoDB : Auto-incrémentation des clés non primaires

Dans MySQL InnoDB, il est possible d'auto-incrémenter une clé non primaire colonne, mais cela n'est généralement pas recommandé.

Question :

Est-il possible d'incrémenter automatiquement une clé non primaire, en particulier la colonne comment_id dans book_comments table ?

Alternatives :

L'interrogateur suggère deux alternatives à l'utilisation d'une clé non primaire à incrémentation automatique :

  • Faire de comment_id le clé primaire et application de l'intégrité avec un index unique sur (book_id, timestamp, user_id)
  • Conserver la clé primaire existante et remplacer comment_id par la clé primaire entière dans la table book_comments_votes

Cependant , ces alternatives présentent des inconvénients tels que l'ajout d'une surcharge d'index inutile ou une augmentation significative de la taille de la table.

Réponse :

Oui, il est possible d'incrémenter automatiquement un élément non principal clé en créant un index sur cette colonne. L'exemple suivant crée une table avec une colonne testInc auto-incrémentée :

<code class="sql">CREATE TABLE `test` (
  `testID` int(11) NOT NULL,
  `string` varchar(45) DEFAULT NULL,
  `testInc` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`testID`),
  KEY `testInc` (`testInc`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;</code>
Copier après la connexion

Cependant, les experts déconseillent fortement cette pratique. Une approche plus appropriée consiste à faire de comment_id la clé primaire et à appliquer l'intégrité via un index unique sur (book_id, timestamp, user_id). Cette approche fournit une clé primaire appropriée pour la table et adhère au principe du moindre étonnement.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal