Maison  >  Article  >  base de données  >  Comment incrémenter automatiquement les clés non primaires dans MySQL InnoDB ?

Comment incrémenter automatiquement les clés non primaires dans MySQL InnoDB ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 01:47:29852parcourir

How to Auto-Increment Non-Primary Keys in MySQL InnoDB?

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

Le moteur de stockage InnoDB de MySQL permet l'auto-incrémentation des valeurs pour les clés primaires. Cependant, l'incrémentation automatique des clés non primaires n'est pas directement prise en charge.

Question spécifique : structure de la table

Considérez la structure de table suivante pour "book_comments" :

book_id     medium_int
timestamp   medium_int
user_id     medium_int
vote_up     small_int
vote_down   small_int
comment     text
comment_id  medium_int

L'incrémentation automatique des clés non primaires est-elle possible ?

Oui, il est possible d'incrémenter automatiquement une clé non primaire. Cependant, cela nécessite de créer un index sur la colonne à incrémenter automatiquement.

Solution recommandée

Malgré la possibilité d'auto-incrémenter des clés non primaires, la solution recommandée La solution consiste à faire de "comment_id" la clé primaire et à créer un index unique sur la combinaison de "book_id", "timestamp" et "user_id" à des fins d'intégrité des données.

Considérations supplémentaires

Les suggestions alternatives mentionnées dans la question présentent des inconvénients :

  • Faire de "comment_id" la clé primaire et créer un index unique : Cette solution introduit un index supplémentaire , ce qui n'est peut-être pas souhaitable.
  • Remplacement de "comment_id" par la clé primaire dans "book_comments_votes": Cela augmente considérablement la taille de "book_comments_votes" et peut affecter les performances.

Par conséquent, la solution la plus efficace et la plus robuste consiste à suivre l'approche recommandée consistant à utiliser "comment_id" comme clé primaire et à créer un index unique sur "book_id", "timestamp" et "user_id".

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