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 :
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>
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!