Maison  >  Article  >  base de données  >  Une colonne de clé non primaire dans MySQL InnoDB peut-elle être auto-incrémentée ?

Une colonne de clé non primaire dans MySQL InnoDB peut-elle être auto-incrémentée ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 10:12:32345parcourir

Can a Non-Primary Key Column in MySQL InnoDB be Auto-Incremented?

Clés non primaires à incrémentation automatique dans MySQL InnoDB

Il est possible d'incrémenter automatiquement une colonne de clé non primaire dans MySQL InnoDB. Ceci peut être réalisé en créant un index sur la colonne.

Dans l'exemple donné, pour incrémenter automatiquement la colonne comment_id dans la table book_comments, suivez ces étapes :

<code class="sql">CREATE TABLE book_comments (
    book_id mediumint,
    timestamp mediumint,
    user_id mediumint,
    vote_up smallint,
    vote_down smallint,
    comment text,
    comment_id mediumint,

    PRIMARY KEY (book_id, timestamp, user_id),
    INDEX id (comment_id)
);</code>

Ajout du INDEX sur comment_id active le comportement d'auto-incrémentation tout en garantissant que l'index correspondant est maintenu par InnoDB. Le nom de l'index d'identification peut être personnalisé selon les besoins.

Pour la table book_comments_votes, il est recommandé d'utiliser l'intégralité de la clé primaire de book_comments comme clé étrangère pour renforcer l'intégrité référentielle et éviter les doublons.

Alors faire de comment_id la clé primaire et renforcer l'intégrité via un index unique sur book_id, timestamp et user_id est conceptuellement viable, il est généralement considéré comme une bonne pratique d'avoir une clé primaire unique pour chaque table. Cela garantit une récupération et une maintenance cohérentes et fiables des données.

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